//===----------------------------------------------------------------------===//
//
// This source file is part of the Soto for AWS open source project
//
// Copyright (c) 2017-2024 the Soto project authors
// Licensed under Apache License v2.0
//
// See LICENSE.txt for license information
// See CONTRIBUTORS.txt for the list of Soto project authors
//
// SPDX-License-Identifier: Apache-2.0
//
//===----------------------------------------------------------------------===//

// THIS FILE IS AUTOMATICALLY GENERATED by https://github.com/soto-project/soto-codegenerator.
// DO NOT EDIT.

#if canImport(FoundationEssentials)
import FoundationEssentials
#else
import Foundation
#endif
@_exported import SotoCore

/// Service object for interacting with AWS ChimeSDKVoice service.
///
/// The Amazon Chime SDK telephony APIs in this section enable developers to create PSTN calling solutions that use Amazon Chime SDK Voice Connectors, and Amazon Chime SDK SIP media applications. Developers can  also order and manage phone numbers, create and manage Voice Connectors and SIP media applications, and run voice analytics.
public struct ChimeSDKVoice: AWSService {
    // MARK: Member variables

    /// Client used for communication with AWS
    public let client: AWSClient
    /// Service configuration
    public let config: AWSServiceConfig

    // MARK: Initialization

    /// Initialize the ChimeSDKVoice client
    /// - parameters:
    ///     - client: AWSClient used to process requests
    ///     - region: Region of server you want to communicate with. This will override the partition parameter.
    ///     - partition: AWS partition where service resides, standard (.aws), china (.awscn), government (.awsusgov).
    ///     - endpoint: Custom endpoint URL to use instead of standard AWS servers
    ///     - middleware: Middleware chain used to edit requests before they are sent and responses before they are decoded 
    ///     - timeout: Timeout value for HTTP requests
    ///     - byteBufferAllocator: Allocator for ByteBuffers
    ///     - options: Service options
    public init(
        client: AWSClient,
        region: SotoCore.Region? = nil,
        partition: AWSPartition = .aws,
        endpoint: String? = nil,
        middleware: AWSMiddlewareProtocol? = nil,
        timeout: TimeAmount? = nil,
        byteBufferAllocator: ByteBufferAllocator = ByteBufferAllocator(),
        options: AWSServiceConfig.Options = []
    ) {
        self.client = client
        self.config = AWSServiceConfig(
            region: region,
            partition: region?.partition ?? partition,
            serviceName: "ChimeSDKVoice",
            serviceIdentifier: "voice-chime",
            signingName: "chime",
            serviceProtocol: .restjson,
            apiVersion: "2022-08-03",
            endpoint: endpoint,
            variantEndpoints: Self.variantEndpoints,
            errorType: ChimeSDKVoiceErrorType.self,
            middleware: middleware,
            timeout: timeout,
            byteBufferAllocator: byteBufferAllocator,
            options: options
        )
    }




    /// FIPS and dualstack endpoints
    static var variantEndpoints: [EndpointVariantType: AWSServiceConfig.EndpointVariant] {[
        [.fips]: .init(endpoints: [
            "ca-central-1": "voice-chime-fips.ca-central-1.amazonaws.com",
            "us-east-1": "voice-chime-fips.us-east-1.amazonaws.com",
            "us-west-2": "voice-chime-fips.us-west-2.amazonaws.com"
        ])
    ]}

    // MARK: API Calls

    /// Associates phone numbers with the specified Amazon Chime SDK Voice Connector.
    @Sendable
    @inlinable
    public func associatePhoneNumbersWithVoiceConnector(_ input: AssociatePhoneNumbersWithVoiceConnectorRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> AssociatePhoneNumbersWithVoiceConnectorResponse {
        try await self.client.execute(
            operation: "AssociatePhoneNumbersWithVoiceConnector", 
            path: "/voice-connectors/{VoiceConnectorId}?operation=associate-phone-numbers", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Associates phone numbers with the specified Amazon Chime SDK Voice Connector.
    ///
    /// Parameters:
    ///   - e164PhoneNumbers: List of phone numbers, in E.164 format.
    ///   - forceAssociate: If true, associates the provided phone numbers with the provided Amazon Chime SDK Voice Connector and removes any previously existing associations. If false, does not associate any phone numbers that have previously existing associations.
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func associatePhoneNumbersWithVoiceConnector(
        e164PhoneNumbers: [String],
        forceAssociate: Bool? = nil,
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> AssociatePhoneNumbersWithVoiceConnectorResponse {
        let input = AssociatePhoneNumbersWithVoiceConnectorRequest(
            e164PhoneNumbers: e164PhoneNumbers, 
            forceAssociate: forceAssociate, 
            voiceConnectorId: voiceConnectorId
        )
        return try await self.associatePhoneNumbersWithVoiceConnector(input, logger: logger)
    }

    /// Associates phone numbers with the specified Amazon Chime SDK Voice Connector group.
    @Sendable
    @inlinable
    public func associatePhoneNumbersWithVoiceConnectorGroup(_ input: AssociatePhoneNumbersWithVoiceConnectorGroupRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> AssociatePhoneNumbersWithVoiceConnectorGroupResponse {
        try await self.client.execute(
            operation: "AssociatePhoneNumbersWithVoiceConnectorGroup", 
            path: "/voice-connector-groups/{VoiceConnectorGroupId}?operation=associate-phone-numbers", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Associates phone numbers with the specified Amazon Chime SDK Voice Connector group.
    ///
    /// Parameters:
    ///   - e164PhoneNumbers: List of phone numbers, in E.164 format.
    ///   - forceAssociate: If true, associates the provided phone numbers with the provided Amazon Chime SDK Voice Connector Group and removes any previously existing associations.  If false, does not associate any phone numbers that have previously existing associations.
    ///   - voiceConnectorGroupId: The Amazon Chime SDK Voice Connector group ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func associatePhoneNumbersWithVoiceConnectorGroup(
        e164PhoneNumbers: [String],
        forceAssociate: Bool? = nil,
        voiceConnectorGroupId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> AssociatePhoneNumbersWithVoiceConnectorGroupResponse {
        let input = AssociatePhoneNumbersWithVoiceConnectorGroupRequest(
            e164PhoneNumbers: e164PhoneNumbers, 
            forceAssociate: forceAssociate, 
            voiceConnectorGroupId: voiceConnectorGroupId
        )
        return try await self.associatePhoneNumbersWithVoiceConnectorGroup(input, logger: logger)
    }

    ///  Moves phone numbers into the  Deletion queue. Phone numbers must be disassociated from any users or Amazon Chime SDK Voice Connectors before they can be deleted.   Phone numbers remain in the  Deletion queue for 7 days before they are deleted permanently.
    @Sendable
    @inlinable
    public func batchDeletePhoneNumber(_ input: BatchDeletePhoneNumberRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> BatchDeletePhoneNumberResponse {
        try await self.client.execute(
            operation: "BatchDeletePhoneNumber", 
            path: "/phone-numbers?operation=batch-delete", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    ///  Moves phone numbers into the  Deletion queue. Phone numbers must be disassociated from any users or Amazon Chime SDK Voice Connectors before they can be deleted.   Phone numbers remain in the  Deletion queue for 7 days before they are deleted permanently.
    ///
    /// Parameters:
    ///   - phoneNumberIds: List of phone number IDs.
    ///   - logger: Logger use during operation
    @inlinable
    public func batchDeletePhoneNumber(
        phoneNumberIds: [String],
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> BatchDeletePhoneNumberResponse {
        let input = BatchDeletePhoneNumberRequest(
            phoneNumberIds: phoneNumberIds
        )
        return try await self.batchDeletePhoneNumber(input, logger: logger)
    }

    /// Updates phone number product types, calling names, or phone number names. You can update one attribute at a time for each  UpdatePhoneNumberRequestItem. For example, you can update the product type, the calling name, or phone name.   You cannot have a duplicate phoneNumberId in a request.
    @Sendable
    @inlinable
    public func batchUpdatePhoneNumber(_ input: BatchUpdatePhoneNumberRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> BatchUpdatePhoneNumberResponse {
        try await self.client.execute(
            operation: "BatchUpdatePhoneNumber", 
            path: "/phone-numbers?operation=batch-update", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates phone number product types, calling names, or phone number names. You can update one attribute at a time for each  UpdatePhoneNumberRequestItem. For example, you can update the product type, the calling name, or phone name.   You cannot have a duplicate phoneNumberId in a request.
    ///
    /// Parameters:
    ///   - updatePhoneNumberRequestItems: Lists the phone numbers in the update request.
    ///   - logger: Logger use during operation
    @inlinable
    public func batchUpdatePhoneNumber(
        updatePhoneNumberRequestItems: [UpdatePhoneNumberRequestItem],
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> BatchUpdatePhoneNumberResponse {
        let input = BatchUpdatePhoneNumberRequest(
            updatePhoneNumberRequestItems: updatePhoneNumberRequestItems
        )
        return try await self.batchUpdatePhoneNumber(input, logger: logger)
    }

    /// Creates an order for phone numbers to be provisioned. For numbers outside the U.S., you must use the Amazon Chime SDK SIP media application dial-in product type.
    @Sendable
    @inlinable
    public func createPhoneNumberOrder(_ input: CreatePhoneNumberOrderRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreatePhoneNumberOrderResponse {
        try await self.client.execute(
            operation: "CreatePhoneNumberOrder", 
            path: "/phone-number-orders", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Creates an order for phone numbers to be provisioned. For numbers outside the U.S., you must use the Amazon Chime SDK SIP media application dial-in product type.
    ///
    /// Parameters:
    ///   - e164PhoneNumbers: List of phone numbers, in E.164 format.
    ///   - name: Specifies the name assigned to one or more phone numbers.
    ///   - productType: The phone number product type.
    ///   - logger: Logger use during operation
    @inlinable
    public func createPhoneNumberOrder(
        e164PhoneNumbers: [String],
        name: String? = nil,
        productType: PhoneNumberProductType,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreatePhoneNumberOrderResponse {
        let input = CreatePhoneNumberOrderRequest(
            e164PhoneNumbers: e164PhoneNumbers, 
            name: name, 
            productType: productType
        )
        return try await self.createPhoneNumberOrder(input, logger: logger)
    }

    /// Creates a proxy session for the specified Amazon Chime SDK Voice Connector for  the specified participant phone numbers.
    @Sendable
    @inlinable
    public func createProxySession(_ input: CreateProxySessionRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreateProxySessionResponse {
        try await self.client.execute(
            operation: "CreateProxySession", 
            path: "/voice-connectors/{VoiceConnectorId}/proxy-sessions", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Creates a proxy session for the specified Amazon Chime SDK Voice Connector for  the specified participant phone numbers.
    ///
    /// Parameters:
    ///   - capabilities: The proxy session's capabilities.
    ///   - expiryMinutes: The number of minutes allowed for the proxy session.
    ///   - geoMatchLevel: The preference for matching the country or area code of the proxy phone number with that of the first participant.
    ///   - geoMatchParams: The country and area code for the proxy phone number.
    ///   - name: The name of the proxy session.
    ///   - numberSelectionBehavior: The preference for proxy phone number reuse, or stickiness, between the same  participants across sessions.
    ///   - participantPhoneNumbers: The participant phone numbers.
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func createProxySession(
        capabilities: [Capability],
        expiryMinutes: Int? = nil,
        geoMatchLevel: GeoMatchLevel? = nil,
        geoMatchParams: GeoMatchParams? = nil,
        name: String? = nil,
        numberSelectionBehavior: NumberSelectionBehavior? = nil,
        participantPhoneNumbers: [String],
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreateProxySessionResponse {
        let input = CreateProxySessionRequest(
            capabilities: capabilities, 
            expiryMinutes: expiryMinutes, 
            geoMatchLevel: geoMatchLevel, 
            geoMatchParams: geoMatchParams, 
            name: name, 
            numberSelectionBehavior: numberSelectionBehavior, 
            participantPhoneNumbers: participantPhoneNumbers, 
            voiceConnectorId: voiceConnectorId
        )
        return try await self.createProxySession(input, logger: logger)
    }

    /// Creates a SIP media application. For more information about SIP media applications, see Managing SIP media applications  and rules in the Amazon Chime SDK Administrator Guide.
    @Sendable
    @inlinable
    public func createSipMediaApplication(_ input: CreateSipMediaApplicationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreateSipMediaApplicationResponse {
        try await self.client.execute(
            operation: "CreateSipMediaApplication", 
            path: "/sip-media-applications", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Creates a SIP media application. For more information about SIP media applications, see Managing SIP media applications  and rules in the Amazon Chime SDK Administrator Guide.
    ///
    /// Parameters:
    ///   - awsRegion: The AWS Region assigned to the SIP media application.
    ///   - endpoints: List of endpoints (Lambda ARNs) specified for the SIP media application.
    ///   - name: The SIP media application's name.
    ///   - tags: The tags assigned to the SIP media application.
    ///   - logger: Logger use during operation
    @inlinable
    public func createSipMediaApplication(
        awsRegion: String,
        endpoints: [SipMediaApplicationEndpoint],
        name: String,
        tags: [Tag]? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreateSipMediaApplicationResponse {
        let input = CreateSipMediaApplicationRequest(
            awsRegion: awsRegion, 
            endpoints: endpoints, 
            name: name, 
            tags: tags
        )
        return try await self.createSipMediaApplication(input, logger: logger)
    }

    /// Creates an outbound call to a phone number from the phone number specified  in the request, and it invokes the endpoint of the specified  sipMediaApplicationId.
    @Sendable
    @inlinable
    public func createSipMediaApplicationCall(_ input: CreateSipMediaApplicationCallRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreateSipMediaApplicationCallResponse {
        try await self.client.execute(
            operation: "CreateSipMediaApplicationCall", 
            path: "/sip-media-applications/{SipMediaApplicationId}/calls", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Creates an outbound call to a phone number from the phone number specified  in the request, and it invokes the endpoint of the specified  sipMediaApplicationId.
    ///
    /// Parameters:
    ///   - argumentsMap: Context passed to a CreateSipMediaApplication API call. For example, you could pass key-value pairs such as: "FirstName": "John", "LastName": "Doe"
    ///   - fromPhoneNumber: The phone number that a user calls from. This is a phone number in your  Amazon Chime SDK phone number inventory.
    ///   - sipHeaders: The SIP headers added to an outbound call leg.
    ///   - sipMediaApplicationId: The ID of the SIP media application.
    ///   - toPhoneNumber: The phone number that the service should call.
    ///   - logger: Logger use during operation
    @inlinable
    public func createSipMediaApplicationCall(
        argumentsMap: [String: String]? = nil,
        fromPhoneNumber: String,
        sipHeaders: [String: String]? = nil,
        sipMediaApplicationId: String,
        toPhoneNumber: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreateSipMediaApplicationCallResponse {
        let input = CreateSipMediaApplicationCallRequest(
            argumentsMap: argumentsMap, 
            fromPhoneNumber: fromPhoneNumber, 
            sipHeaders: sipHeaders, 
            sipMediaApplicationId: sipMediaApplicationId, 
            toPhoneNumber: toPhoneNumber
        )
        return try await self.createSipMediaApplicationCall(input, logger: logger)
    }

    /// Creates a SIP rule, which can be used to run a SIP media application as a target for a specific trigger type. For more information about SIP rules, see Managing SIP media applications  and rules in the Amazon Chime SDK Administrator Guide.
    @Sendable
    @inlinable
    public func createSipRule(_ input: CreateSipRuleRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreateSipRuleResponse {
        try await self.client.execute(
            operation: "CreateSipRule", 
            path: "/sip-rules", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Creates a SIP rule, which can be used to run a SIP media application as a target for a specific trigger type. For more information about SIP rules, see Managing SIP media applications  and rules in the Amazon Chime SDK Administrator Guide.
    ///
    /// Parameters:
    ///   - disabled: Disables or enables a SIP rule. You must disable SIP rules  before you can delete them.
    ///   - name: The name of the SIP rule.
    ///   - targetApplications: List of SIP media applications, with priority and AWS Region. Only one SIP  application per AWS Region can be used.
    ///   - triggerType: The type of trigger assigned to the SIP rule in TriggerValue,  currently RequestUriHostname or ToPhoneNumber.
    ///   - triggerValue: If TriggerType is RequestUriHostname, the  value can be the outbound host name of a Voice Connector. If  TriggerType is ToPhoneNumber, the value can  be a customer-owned phone number in the E164 format. The  SipMediaApplication specified in the SipRule is triggered  if the request URI in an incoming SIP request matches the  RequestUriHostname, or if the To header in the  incoming SIP request matches the ToPhoneNumber value.
    ///   - logger: Logger use during operation
    @inlinable
    public func createSipRule(
        disabled: Bool? = nil,
        name: String,
        targetApplications: [SipRuleTargetApplication]? = nil,
        triggerType: SipRuleTriggerType,
        triggerValue: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreateSipRuleResponse {
        let input = CreateSipRuleRequest(
            disabled: disabled, 
            name: name, 
            targetApplications: targetApplications, 
            triggerType: triggerType, 
            triggerValue: triggerValue
        )
        return try await self.createSipRule(input, logger: logger)
    }

    /// Creates an Amazon Chime SDK Voice Connector. For more information about  Voice Connectors, see Managing Amazon Chime SDK Voice Connector groups in the Amazon Chime SDK Administrator Guide.
    @Sendable
    @inlinable
    public func createVoiceConnector(_ input: CreateVoiceConnectorRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreateVoiceConnectorResponse {
        try await self.client.execute(
            operation: "CreateVoiceConnector", 
            path: "/voice-connectors", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Creates an Amazon Chime SDK Voice Connector. For more information about  Voice Connectors, see Managing Amazon Chime SDK Voice Connector groups in the Amazon Chime SDK Administrator Guide.
    ///
    /// Parameters:
    ///   - awsRegion: The AWS Region in which the Amazon Chime SDK Voice Connector is created. Default value:  us-east-1 .
    ///   - integrationType: The connectors for use with Amazon Connect. The following options are available:    CONNECT_CALL_TRANSFER_CONNECTOR - Enables enterprises to integrate Amazon Connect with other voice systems to directly transfer voice calls and metadata without using the public telephone network. They can use Amazon Connect telephony and Interactive Voice Response (IVR) with their existing voice systems to modernize the IVR experience of their existing contact center and their enterprise and branch voice systems. Additionally, enterprises migrating their contact center to Amazon Connect can start with Connect telephony and IVR for immediate modernization ahead of agent migration.    CONNECT_ANALYTICS_CONNECTOR - Enables enterprises to integrate Amazon Connect with other voice systems for real-time and post-call analytics. They can use Amazon Connect Contact Lens with their existing voice systems to provides call recordings, conversational analytics (including contact transcript, sensitive data redaction, content categorization, theme detection, sentiment analysis, real-time alerts, and post-contact summary), and agent performance evaluations (including evaluation forms, automated evaluation, supervisor review) with a rich user experience to display, search and filter customer interactions, and programmatic access to data streams and the data lake. Additionally, enterprises migrating their contact center to Amazon Connect can start with Contact Lens analytics and performance insights ahead of agent migration.
    ///   - name: The name of the Voice Connector.
    ///   - requireEncryption: Enables or disables encryption for the Voice Connector.
    ///   - tags: The tags assigned to the Voice Connector.
    ///   - logger: Logger use during operation
    @inlinable
    public func createVoiceConnector(
        awsRegion: VoiceConnectorAwsRegion? = nil,
        integrationType: VoiceConnectorIntegrationType? = nil,
        name: String,
        requireEncryption: Bool,
        tags: [Tag]? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreateVoiceConnectorResponse {
        let input = CreateVoiceConnectorRequest(
            awsRegion: awsRegion, 
            integrationType: integrationType, 
            name: name, 
            requireEncryption: requireEncryption, 
            tags: tags
        )
        return try await self.createVoiceConnector(input, logger: logger)
    }

    /// Creates an Amazon Chime SDK Voice Connector group under the administrator's  AWS account. You can associate Amazon Chime SDK Voice Connectors with the  Voice Connector group by including VoiceConnectorItems in the  request.  You can include Voice Connectors from different AWS Regions in your group.  This creates a fault tolerant mechanism for fallback in case of availability events.
    @Sendable
    @inlinable
    public func createVoiceConnectorGroup(_ input: CreateVoiceConnectorGroupRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreateVoiceConnectorGroupResponse {
        try await self.client.execute(
            operation: "CreateVoiceConnectorGroup", 
            path: "/voice-connector-groups", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Creates an Amazon Chime SDK Voice Connector group under the administrator's  AWS account. You can associate Amazon Chime SDK Voice Connectors with the  Voice Connector group by including VoiceConnectorItems in the  request.  You can include Voice Connectors from different AWS Regions in your group.  This creates a fault tolerant mechanism for fallback in case of availability events.
    ///
    /// Parameters:
    ///   - name: The name of the Voice Connector group.
    ///   - voiceConnectorItems: Lists the Voice Connectors that inbound calls are routed to.
    ///   - logger: Logger use during operation
    @inlinable
    public func createVoiceConnectorGroup(
        name: String,
        voiceConnectorItems: [VoiceConnectorItem]? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreateVoiceConnectorGroupResponse {
        let input = CreateVoiceConnectorGroupRequest(
            name: name, 
            voiceConnectorItems: voiceConnectorItems
        )
        return try await self.createVoiceConnectorGroup(input, logger: logger)
    }

    /// Creates a voice profile, which consists of an enrolled user and their latest voice print.  Before creating any voice profiles, you must provide all notices and obtain all consents from the speaker as required under applicable privacy and biometrics laws, and as required under the   AWS service terms for the Amazon Chime SDK.  For more information about voice profiles and voice analytics, see Using Amazon Chime SDK Voice Analytics  in the Amazon Chime SDK Developer Guide.
    @Sendable
    @inlinable
    public func createVoiceProfile(_ input: CreateVoiceProfileRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreateVoiceProfileResponse {
        try await self.client.execute(
            operation: "CreateVoiceProfile", 
            path: "/voice-profiles", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Creates a voice profile, which consists of an enrolled user and their latest voice print.  Before creating any voice profiles, you must provide all notices and obtain all consents from the speaker as required under applicable privacy and biometrics laws, and as required under the   AWS service terms for the Amazon Chime SDK.  For more information about voice profiles and voice analytics, see Using Amazon Chime SDK Voice Analytics  in the Amazon Chime SDK Developer Guide.
    ///
    /// Parameters:
    ///   - speakerSearchTaskId: The ID of the speaker search task.
    ///   - logger: Logger use during operation
    @inlinable
    public func createVoiceProfile(
        speakerSearchTaskId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreateVoiceProfileResponse {
        let input = CreateVoiceProfileRequest(
            speakerSearchTaskId: speakerSearchTaskId
        )
        return try await self.createVoiceProfile(input, logger: logger)
    }

    /// Creates a voice profile domain, a collection of voice profiles, their voice prints, and encrypted enrollment audio.  Before creating any voice profiles, you must provide all notices and obtain all consents from the speaker as required under applicable privacy and biometrics laws, and as required under the   AWS service terms for the Amazon Chime SDK.  For more information about voice profile domains, see Using Amazon Chime SDK Voice Analytics  in the Amazon Chime SDK Developer Guide.
    @Sendable
    @inlinable
    public func createVoiceProfileDomain(_ input: CreateVoiceProfileDomainRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreateVoiceProfileDomainResponse {
        try await self.client.execute(
            operation: "CreateVoiceProfileDomain", 
            path: "/voice-profile-domains", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Creates a voice profile domain, a collection of voice profiles, their voice prints, and encrypted enrollment audio.  Before creating any voice profiles, you must provide all notices and obtain all consents from the speaker as required under applicable privacy and biometrics laws, and as required under the   AWS service terms for the Amazon Chime SDK.  For more information about voice profile domains, see Using Amazon Chime SDK Voice Analytics  in the Amazon Chime SDK Developer Guide.
    ///
    /// Parameters:
    ///   - clientRequestToken: The unique identifier for the client request. Use a different token for different domain creation requests.
    ///   - description: A description of the voice profile domain.
    ///   - name: The name of the voice profile domain.
    ///   - serverSideEncryptionConfiguration: The server-side encryption configuration for the request.
    ///   - tags: The tags assigned to the domain.
    ///   - logger: Logger use during operation
    @inlinable
    public func createVoiceProfileDomain(
        clientRequestToken: String? = nil,
        description: String? = nil,
        name: String,
        serverSideEncryptionConfiguration: ServerSideEncryptionConfiguration,
        tags: [Tag]? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreateVoiceProfileDomainResponse {
        let input = CreateVoiceProfileDomainRequest(
            clientRequestToken: clientRequestToken, 
            description: description, 
            name: name, 
            serverSideEncryptionConfiguration: serverSideEncryptionConfiguration, 
            tags: tags
        )
        return try await self.createVoiceProfileDomain(input, logger: logger)
    }

    /// Moves the specified phone number into the  Deletion queue. A phone number must  be disassociated from any users or Amazon Chime SDK Voice Connectors before it can be  deleted. Deleted phone numbers remain in the  Deletion queue queue for 7 days before  they are deleted permanently.
    @Sendable
    @inlinable
    public func deletePhoneNumber(_ input: DeletePhoneNumberRequest, logger: Logger = AWSClient.loggingDisabled) async throws {
        try await self.client.execute(
            operation: "DeletePhoneNumber", 
            path: "/phone-numbers/{PhoneNumberId}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Moves the specified phone number into the  Deletion queue. A phone number must  be disassociated from any users or Amazon Chime SDK Voice Connectors before it can be  deleted. Deleted phone numbers remain in the  Deletion queue queue for 7 days before  they are deleted permanently.
    ///
    /// Parameters:
    ///   - phoneNumberId: The phone number ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func deletePhoneNumber(
        phoneNumberId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws {
        let input = DeletePhoneNumberRequest(
            phoneNumberId: phoneNumberId
        )
        return try await self.deletePhoneNumber(input, logger: logger)
    }

    /// Deletes the specified proxy session from the specified Amazon Chime SDK Voice  Connector.
    @Sendable
    @inlinable
    public func deleteProxySession(_ input: DeleteProxySessionRequest, logger: Logger = AWSClient.loggingDisabled) async throws {
        try await self.client.execute(
            operation: "DeleteProxySession", 
            path: "/voice-connectors/{VoiceConnectorId}/proxy-sessions/{ProxySessionId}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes the specified proxy session from the specified Amazon Chime SDK Voice  Connector.
    ///
    /// Parameters:
    ///   - proxySessionId: The proxy session ID.
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteProxySession(
        proxySessionId: String,
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws {
        let input = DeleteProxySessionRequest(
            proxySessionId: proxySessionId, 
            voiceConnectorId: voiceConnectorId
        )
        return try await self.deleteProxySession(input, logger: logger)
    }

    /// Deletes a SIP media application.
    @Sendable
    @inlinable
    public func deleteSipMediaApplication(_ input: DeleteSipMediaApplicationRequest, logger: Logger = AWSClient.loggingDisabled) async throws {
        try await self.client.execute(
            operation: "DeleteSipMediaApplication", 
            path: "/sip-media-applications/{SipMediaApplicationId}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes a SIP media application.
    ///
    /// Parameters:
    ///   - sipMediaApplicationId: The SIP media application ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteSipMediaApplication(
        sipMediaApplicationId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws {
        let input = DeleteSipMediaApplicationRequest(
            sipMediaApplicationId: sipMediaApplicationId
        )
        return try await self.deleteSipMediaApplication(input, logger: logger)
    }

    /// Deletes a SIP rule.
    @Sendable
    @inlinable
    public func deleteSipRule(_ input: DeleteSipRuleRequest, logger: Logger = AWSClient.loggingDisabled) async throws {
        try await self.client.execute(
            operation: "DeleteSipRule", 
            path: "/sip-rules/{SipRuleId}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes a SIP rule.
    ///
    /// Parameters:
    ///   - sipRuleId: The SIP rule ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteSipRule(
        sipRuleId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws {
        let input = DeleteSipRuleRequest(
            sipRuleId: sipRuleId
        )
        return try await self.deleteSipRule(input, logger: logger)
    }

    /// Deletes an Amazon Chime SDK Voice Connector. Any phone numbers associated  with the Amazon Chime SDK Voice Connector must be disassociated from it before it  can be deleted.
    @Sendable
    @inlinable
    public func deleteVoiceConnector(_ input: DeleteVoiceConnectorRequest, logger: Logger = AWSClient.loggingDisabled) async throws {
        try await self.client.execute(
            operation: "DeleteVoiceConnector", 
            path: "/voice-connectors/{VoiceConnectorId}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes an Amazon Chime SDK Voice Connector. Any phone numbers associated  with the Amazon Chime SDK Voice Connector must be disassociated from it before it  can be deleted.
    ///
    /// Parameters:
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteVoiceConnector(
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws {
        let input = DeleteVoiceConnectorRequest(
            voiceConnectorId: voiceConnectorId
        )
        return try await self.deleteVoiceConnector(input, logger: logger)
    }

    /// Deletes the emergency calling details from the specified Amazon Chime SDK Voice  Connector.
    @Sendable
    @inlinable
    public func deleteVoiceConnectorEmergencyCallingConfiguration(_ input: DeleteVoiceConnectorEmergencyCallingConfigurationRequest, logger: Logger = AWSClient.loggingDisabled) async throws {
        try await self.client.execute(
            operation: "DeleteVoiceConnectorEmergencyCallingConfiguration", 
            path: "/voice-connectors/{VoiceConnectorId}/emergency-calling-configuration", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes the emergency calling details from the specified Amazon Chime SDK Voice  Connector.
    ///
    /// Parameters:
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteVoiceConnectorEmergencyCallingConfiguration(
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws {
        let input = DeleteVoiceConnectorEmergencyCallingConfigurationRequest(
            voiceConnectorId: voiceConnectorId
        )
        return try await self.deleteVoiceConnectorEmergencyCallingConfiguration(input, logger: logger)
    }

    /// Deletes the external systems configuration for a Voice Connector.
    @Sendable
    @inlinable
    public func deleteVoiceConnectorExternalSystemsConfiguration(_ input: DeleteVoiceConnectorExternalSystemsConfigurationRequest, logger: Logger = AWSClient.loggingDisabled) async throws {
        try await self.client.execute(
            operation: "DeleteVoiceConnectorExternalSystemsConfiguration", 
            path: "/voice-connectors/{VoiceConnectorId}/external-systems-configuration", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes the external systems configuration for a Voice Connector.
    ///
    /// Parameters:
    ///   - voiceConnectorId: The ID of the Voice Connector for which to delete the external system configuration.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteVoiceConnectorExternalSystemsConfiguration(
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws {
        let input = DeleteVoiceConnectorExternalSystemsConfigurationRequest(
            voiceConnectorId: voiceConnectorId
        )
        return try await self.deleteVoiceConnectorExternalSystemsConfiguration(input, logger: logger)
    }

    /// Deletes an Amazon Chime SDK Voice Connector group. Any VoiceConnectorItems  and phone numbers associated with the group must be removed before it can be  deleted.
    @Sendable
    @inlinable
    public func deleteVoiceConnectorGroup(_ input: DeleteVoiceConnectorGroupRequest, logger: Logger = AWSClient.loggingDisabled) async throws {
        try await self.client.execute(
            operation: "DeleteVoiceConnectorGroup", 
            path: "/voice-connector-groups/{VoiceConnectorGroupId}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes an Amazon Chime SDK Voice Connector group. Any VoiceConnectorItems  and phone numbers associated with the group must be removed before it can be  deleted.
    ///
    /// Parameters:
    ///   - voiceConnectorGroupId: The Voice Connector Group ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteVoiceConnectorGroup(
        voiceConnectorGroupId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws {
        let input = DeleteVoiceConnectorGroupRequest(
            voiceConnectorGroupId: voiceConnectorGroupId
        )
        return try await self.deleteVoiceConnectorGroup(input, logger: logger)
    }

    /// Deletes the origination settings for the specified Amazon Chime SDK Voice Connector.   If emergency calling is configured for the Voice Connector, it must be  deleted prior to deleting the origination settings.
    @Sendable
    @inlinable
    public func deleteVoiceConnectorOrigination(_ input: DeleteVoiceConnectorOriginationRequest, logger: Logger = AWSClient.loggingDisabled) async throws {
        try await self.client.execute(
            operation: "DeleteVoiceConnectorOrigination", 
            path: "/voice-connectors/{VoiceConnectorId}/origination", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes the origination settings for the specified Amazon Chime SDK Voice Connector.   If emergency calling is configured for the Voice Connector, it must be  deleted prior to deleting the origination settings.
    ///
    /// Parameters:
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteVoiceConnectorOrigination(
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws {
        let input = DeleteVoiceConnectorOriginationRequest(
            voiceConnectorId: voiceConnectorId
        )
        return try await self.deleteVoiceConnectorOrigination(input, logger: logger)
    }

    /// Deletes the proxy configuration from the specified Amazon Chime SDK Voice Connector.
    @Sendable
    @inlinable
    public func deleteVoiceConnectorProxy(_ input: DeleteVoiceConnectorProxyRequest, logger: Logger = AWSClient.loggingDisabled) async throws {
        try await self.client.execute(
            operation: "DeleteVoiceConnectorProxy", 
            path: "/voice-connectors/{VoiceConnectorId}/programmable-numbers/proxy", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes the proxy configuration from the specified Amazon Chime SDK Voice Connector.
    ///
    /// Parameters:
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteVoiceConnectorProxy(
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws {
        let input = DeleteVoiceConnectorProxyRequest(
            voiceConnectorId: voiceConnectorId
        )
        return try await self.deleteVoiceConnectorProxy(input, logger: logger)
    }

    /// Deletes a Voice Connector's streaming configuration.
    @Sendable
    @inlinable
    public func deleteVoiceConnectorStreamingConfiguration(_ input: DeleteVoiceConnectorStreamingConfigurationRequest, logger: Logger = AWSClient.loggingDisabled) async throws {
        try await self.client.execute(
            operation: "DeleteVoiceConnectorStreamingConfiguration", 
            path: "/voice-connectors/{VoiceConnectorId}/streaming-configuration", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes a Voice Connector's streaming configuration.
    ///
    /// Parameters:
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteVoiceConnectorStreamingConfiguration(
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws {
        let input = DeleteVoiceConnectorStreamingConfigurationRequest(
            voiceConnectorId: voiceConnectorId
        )
        return try await self.deleteVoiceConnectorStreamingConfiguration(input, logger: logger)
    }

    /// Deletes the termination settings for the specified Amazon Chime SDK Voice Connector.  If emergency calling is configured for the Voice Connector, it must be  deleted prior to deleting the termination settings.
    @Sendable
    @inlinable
    public func deleteVoiceConnectorTermination(_ input: DeleteVoiceConnectorTerminationRequest, logger: Logger = AWSClient.loggingDisabled) async throws {
        try await self.client.execute(
            operation: "DeleteVoiceConnectorTermination", 
            path: "/voice-connectors/{VoiceConnectorId}/termination", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes the termination settings for the specified Amazon Chime SDK Voice Connector.  If emergency calling is configured for the Voice Connector, it must be  deleted prior to deleting the termination settings.
    ///
    /// Parameters:
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteVoiceConnectorTermination(
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws {
        let input = DeleteVoiceConnectorTerminationRequest(
            voiceConnectorId: voiceConnectorId
        )
        return try await self.deleteVoiceConnectorTermination(input, logger: logger)
    }

    /// Deletes the specified SIP credentials used by your equipment to  authenticate during call termination.
    @Sendable
    @inlinable
    public func deleteVoiceConnectorTerminationCredentials(_ input: DeleteVoiceConnectorTerminationCredentialsRequest, logger: Logger = AWSClient.loggingDisabled) async throws {
        try await self.client.execute(
            operation: "DeleteVoiceConnectorTerminationCredentials", 
            path: "/voice-connectors/{VoiceConnectorId}/termination/credentials?operation=delete", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes the specified SIP credentials used by your equipment to  authenticate during call termination.
    ///
    /// Parameters:
    ///   - usernames: The RFC2617 compliant username associated with the SIP credentials,  in US-ASCII format.
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteVoiceConnectorTerminationCredentials(
        usernames: [String],
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws {
        let input = DeleteVoiceConnectorTerminationCredentialsRequest(
            usernames: usernames, 
            voiceConnectorId: voiceConnectorId
        )
        return try await self.deleteVoiceConnectorTerminationCredentials(input, logger: logger)
    }

    /// Deletes a voice profile, including its voice print and enrollment data. WARNING: This action is not reversible.
    @Sendable
    @inlinable
    public func deleteVoiceProfile(_ input: DeleteVoiceProfileRequest, logger: Logger = AWSClient.loggingDisabled) async throws {
        try await self.client.execute(
            operation: "DeleteVoiceProfile", 
            path: "/voice-profiles/{VoiceProfileId}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes a voice profile, including its voice print and enrollment data. WARNING: This action is not reversible.
    ///
    /// Parameters:
    ///   - voiceProfileId: The voice profile ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteVoiceProfile(
        voiceProfileId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws {
        let input = DeleteVoiceProfileRequest(
            voiceProfileId: voiceProfileId
        )
        return try await self.deleteVoiceProfile(input, logger: logger)
    }

    /// Deletes all voice profiles in the domain. WARNING: This action is not reversible.
    @Sendable
    @inlinable
    public func deleteVoiceProfileDomain(_ input: DeleteVoiceProfileDomainRequest, logger: Logger = AWSClient.loggingDisabled) async throws {
        try await self.client.execute(
            operation: "DeleteVoiceProfileDomain", 
            path: "/voice-profile-domains/{VoiceProfileDomainId}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes all voice profiles in the domain. WARNING: This action is not reversible.
    ///
    /// Parameters:
    ///   - voiceProfileDomainId: The voice profile domain ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteVoiceProfileDomain(
        voiceProfileDomainId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws {
        let input = DeleteVoiceProfileDomainRequest(
            voiceProfileDomainId: voiceProfileDomainId
        )
        return try await self.deleteVoiceProfileDomain(input, logger: logger)
    }

    /// Disassociates the specified phone numbers from the specified  Amazon Chime SDK Voice Connector.
    @Sendable
    @inlinable
    public func disassociatePhoneNumbersFromVoiceConnector(_ input: DisassociatePhoneNumbersFromVoiceConnectorRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DisassociatePhoneNumbersFromVoiceConnectorResponse {
        try await self.client.execute(
            operation: "DisassociatePhoneNumbersFromVoiceConnector", 
            path: "/voice-connectors/{VoiceConnectorId}?operation=disassociate-phone-numbers", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Disassociates the specified phone numbers from the specified  Amazon Chime SDK Voice Connector.
    ///
    /// Parameters:
    ///   - e164PhoneNumbers: List of phone numbers, in E.164 format.
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func disassociatePhoneNumbersFromVoiceConnector(
        e164PhoneNumbers: [String],
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DisassociatePhoneNumbersFromVoiceConnectorResponse {
        let input = DisassociatePhoneNumbersFromVoiceConnectorRequest(
            e164PhoneNumbers: e164PhoneNumbers, 
            voiceConnectorId: voiceConnectorId
        )
        return try await self.disassociatePhoneNumbersFromVoiceConnector(input, logger: logger)
    }

    /// Disassociates the specified phone numbers from the specified Amazon Chime SDK Voice  Connector group.
    @Sendable
    @inlinable
    public func disassociatePhoneNumbersFromVoiceConnectorGroup(_ input: DisassociatePhoneNumbersFromVoiceConnectorGroupRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DisassociatePhoneNumbersFromVoiceConnectorGroupResponse {
        try await self.client.execute(
            operation: "DisassociatePhoneNumbersFromVoiceConnectorGroup", 
            path: "/voice-connector-groups/{VoiceConnectorGroupId}?operation=disassociate-phone-numbers", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Disassociates the specified phone numbers from the specified Amazon Chime SDK Voice  Connector group.
    ///
    /// Parameters:
    ///   - e164PhoneNumbers: The list of phone numbers, in E.164 format.
    ///   - voiceConnectorGroupId: The Voice Connector group ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func disassociatePhoneNumbersFromVoiceConnectorGroup(
        e164PhoneNumbers: [String],
        voiceConnectorGroupId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DisassociatePhoneNumbersFromVoiceConnectorGroupResponse {
        let input = DisassociatePhoneNumbersFromVoiceConnectorGroupRequest(
            e164PhoneNumbers: e164PhoneNumbers, 
            voiceConnectorGroupId: voiceConnectorGroupId
        )
        return try await self.disassociatePhoneNumbersFromVoiceConnectorGroup(input, logger: logger)
    }

    /// Retrieves the global settings for the Amazon Chime SDK Voice Connectors in an AWS account.
    @Sendable
    @inlinable
    public func getGlobalSettings(logger: Logger = AWSClient.loggingDisabled) async throws -> GetGlobalSettingsResponse {
        try await self.client.execute(
            operation: "GetGlobalSettings", 
            path: "/settings", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            logger: logger
        )
    }

    /// Retrieves details for the specified phone number ID, such as associations,  capabilities, and product type.
    @Sendable
    @inlinable
    public func getPhoneNumber(_ input: GetPhoneNumberRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> GetPhoneNumberResponse {
        try await self.client.execute(
            operation: "GetPhoneNumber", 
            path: "/phone-numbers/{PhoneNumberId}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Retrieves details for the specified phone number ID, such as associations,  capabilities, and product type.
    ///
    /// Parameters:
    ///   - phoneNumberId: The phone number ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func getPhoneNumber(
        phoneNumberId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> GetPhoneNumberResponse {
        let input = GetPhoneNumberRequest(
            phoneNumberId: phoneNumberId
        )
        return try await self.getPhoneNumber(input, logger: logger)
    }

    /// Retrieves details for the specified phone number order, such as the order  creation timestamp, phone numbers in E.164 format, product type, and  order status.
    @Sendable
    @inlinable
    public func getPhoneNumberOrder(_ input: GetPhoneNumberOrderRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> GetPhoneNumberOrderResponse {
        try await self.client.execute(
            operation: "GetPhoneNumberOrder", 
            path: "/phone-number-orders/{PhoneNumberOrderId}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Retrieves details for the specified phone number order, such as the order  creation timestamp, phone numbers in E.164 format, product type, and  order status.
    ///
    /// Parameters:
    ///   - phoneNumberOrderId: The ID of the phone number order .
    ///   - logger: Logger use during operation
    @inlinable
    public func getPhoneNumberOrder(
        phoneNumberOrderId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> GetPhoneNumberOrderResponse {
        let input = GetPhoneNumberOrderRequest(
            phoneNumberOrderId: phoneNumberOrderId
        )
        return try await self.getPhoneNumberOrder(input, logger: logger)
    }

    /// Retrieves the phone number settings for the administrator's AWS account,  such as the default outbound calling name.
    @Sendable
    @inlinable
    public func getPhoneNumberSettings(logger: Logger = AWSClient.loggingDisabled) async throws -> GetPhoneNumberSettingsResponse {
        try await self.client.execute(
            operation: "GetPhoneNumberSettings", 
            path: "/settings/phone-number", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            logger: logger
        )
    }

    /// Retrieves the specified proxy session details for the specified Amazon Chime SDK Voice Connector.
    @Sendable
    @inlinable
    public func getProxySession(_ input: GetProxySessionRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> GetProxySessionResponse {
        try await self.client.execute(
            operation: "GetProxySession", 
            path: "/voice-connectors/{VoiceConnectorId}/proxy-sessions/{ProxySessionId}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Retrieves the specified proxy session details for the specified Amazon Chime SDK Voice Connector.
    ///
    /// Parameters:
    ///   - proxySessionId: The proxy session ID.
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func getProxySession(
        proxySessionId: String,
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> GetProxySessionResponse {
        let input = GetProxySessionRequest(
            proxySessionId: proxySessionId, 
            voiceConnectorId: voiceConnectorId
        )
        return try await self.getProxySession(input, logger: logger)
    }

    /// Retrieves the information for a SIP media application, including name,  AWS Region, and endpoints.
    @Sendable
    @inlinable
    public func getSipMediaApplication(_ input: GetSipMediaApplicationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> GetSipMediaApplicationResponse {
        try await self.client.execute(
            operation: "GetSipMediaApplication", 
            path: "/sip-media-applications/{SipMediaApplicationId}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Retrieves the information for a SIP media application, including name,  AWS Region, and endpoints.
    ///
    /// Parameters:
    ///   - sipMediaApplicationId: The SIP media application ID .
    ///   - logger: Logger use during operation
    @inlinable
    public func getSipMediaApplication(
        sipMediaApplicationId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> GetSipMediaApplicationResponse {
        let input = GetSipMediaApplicationRequest(
            sipMediaApplicationId: sipMediaApplicationId
        )
        return try await self.getSipMediaApplication(input, logger: logger)
    }

    /// Gets the Alexa Skill configuration for the SIP media application.  Due to changes made by the Amazon Alexa service, this API is no longer available for use. For more information, refer to  the Alexa Smart Properties page.
    @available(*, deprecated, message: "Due to changes made by the Amazon Alexa service, this API is no longer available for use. For more information, refer to the Alexa Smart Properties page(https://developer.amazon.com/en-US/alexa/alexasmartproperties).")
    @Sendable
    @inlinable
    public func getSipMediaApplicationAlexaSkillConfiguration(_ input: GetSipMediaApplicationAlexaSkillConfigurationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> GetSipMediaApplicationAlexaSkillConfigurationResponse {
        try await self.client.execute(
            operation: "GetSipMediaApplicationAlexaSkillConfiguration", 
            path: "/sip-media-applications/{SipMediaApplicationId}/alexa-skill-configuration", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Gets the Alexa Skill configuration for the SIP media application.  Due to changes made by the Amazon Alexa service, this API is no longer available for use. For more information, refer to  the Alexa Smart Properties page.
    ///
    /// Parameters:
    ///   - sipMediaApplicationId: The SIP media application ID.
    ///   - logger: Logger use during operation
    @available(*, deprecated, message: "Due to changes made by the Amazon Alexa service, this API is no longer available for use. For more information, refer to the Alexa Smart Properties page(https://developer.amazon.com/en-US/alexa/alexasmartproperties).")
    @inlinable
    public func getSipMediaApplicationAlexaSkillConfiguration(
        sipMediaApplicationId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> GetSipMediaApplicationAlexaSkillConfigurationResponse {
        let input = GetSipMediaApplicationAlexaSkillConfigurationRequest(
            sipMediaApplicationId: sipMediaApplicationId
        )
        return try await self.getSipMediaApplicationAlexaSkillConfiguration(input, logger: logger)
    }

    /// Retrieves the logging configuration for the specified SIP media application.
    @Sendable
    @inlinable
    public func getSipMediaApplicationLoggingConfiguration(_ input: GetSipMediaApplicationLoggingConfigurationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> GetSipMediaApplicationLoggingConfigurationResponse {
        try await self.client.execute(
            operation: "GetSipMediaApplicationLoggingConfiguration", 
            path: "/sip-media-applications/{SipMediaApplicationId}/logging-configuration", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Retrieves the logging configuration for the specified SIP media application.
    ///
    /// Parameters:
    ///   - sipMediaApplicationId: The SIP media application ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func getSipMediaApplicationLoggingConfiguration(
        sipMediaApplicationId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> GetSipMediaApplicationLoggingConfigurationResponse {
        let input = GetSipMediaApplicationLoggingConfigurationRequest(
            sipMediaApplicationId: sipMediaApplicationId
        )
        return try await self.getSipMediaApplicationLoggingConfiguration(input, logger: logger)
    }

    /// Retrieves the details of a SIP rule, such as the rule ID, name, triggers, and  target endpoints.
    @Sendable
    @inlinable
    public func getSipRule(_ input: GetSipRuleRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> GetSipRuleResponse {
        try await self.client.execute(
            operation: "GetSipRule", 
            path: "/sip-rules/{SipRuleId}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Retrieves the details of a SIP rule, such as the rule ID, name, triggers, and  target endpoints.
    ///
    /// Parameters:
    ///   - sipRuleId: The SIP rule ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func getSipRule(
        sipRuleId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> GetSipRuleResponse {
        let input = GetSipRuleRequest(
            sipRuleId: sipRuleId
        )
        return try await self.getSipRule(input, logger: logger)
    }

    /// Retrieves the details of the specified speaker search task.
    @Sendable
    @inlinable
    public func getSpeakerSearchTask(_ input: GetSpeakerSearchTaskRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> GetSpeakerSearchTaskResponse {
        try await self.client.execute(
            operation: "GetSpeakerSearchTask", 
            path: "/voice-connectors/{VoiceConnectorId}/speaker-search-tasks/{SpeakerSearchTaskId}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Retrieves the details of the specified speaker search task.
    ///
    /// Parameters:
    ///   - speakerSearchTaskId: The ID of the speaker search task.
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func getSpeakerSearchTask(
        speakerSearchTaskId: String,
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> GetSpeakerSearchTaskResponse {
        let input = GetSpeakerSearchTaskRequest(
            speakerSearchTaskId: speakerSearchTaskId, 
            voiceConnectorId: voiceConnectorId
        )
        return try await self.getSpeakerSearchTask(input, logger: logger)
    }

    /// Retrieves details for the specified Amazon Chime SDK Voice Connector, such as  timestamps,name, outbound host, and encryption requirements.
    @Sendable
    @inlinable
    public func getVoiceConnector(_ input: GetVoiceConnectorRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> GetVoiceConnectorResponse {
        try await self.client.execute(
            operation: "GetVoiceConnector", 
            path: "/voice-connectors/{VoiceConnectorId}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Retrieves details for the specified Amazon Chime SDK Voice Connector, such as  timestamps,name, outbound host, and encryption requirements.
    ///
    /// Parameters:
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func getVoiceConnector(
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> GetVoiceConnectorResponse {
        let input = GetVoiceConnectorRequest(
            voiceConnectorId: voiceConnectorId
        )
        return try await self.getVoiceConnector(input, logger: logger)
    }

    /// Retrieves the emergency calling configuration details for the specified Voice Connector.
    @Sendable
    @inlinable
    public func getVoiceConnectorEmergencyCallingConfiguration(_ input: GetVoiceConnectorEmergencyCallingConfigurationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> GetVoiceConnectorEmergencyCallingConfigurationResponse {
        try await self.client.execute(
            operation: "GetVoiceConnectorEmergencyCallingConfiguration", 
            path: "/voice-connectors/{VoiceConnectorId}/emergency-calling-configuration", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Retrieves the emergency calling configuration details for the specified Voice Connector.
    ///
    /// Parameters:
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func getVoiceConnectorEmergencyCallingConfiguration(
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> GetVoiceConnectorEmergencyCallingConfigurationResponse {
        let input = GetVoiceConnectorEmergencyCallingConfigurationRequest(
            voiceConnectorId: voiceConnectorId
        )
        return try await self.getVoiceConnectorEmergencyCallingConfiguration(input, logger: logger)
    }

    /// Gets information about an external systems configuration for a Voice Connector.
    @Sendable
    @inlinable
    public func getVoiceConnectorExternalSystemsConfiguration(_ input: GetVoiceConnectorExternalSystemsConfigurationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> GetVoiceConnectorExternalSystemsConfigurationResponse {
        try await self.client.execute(
            operation: "GetVoiceConnectorExternalSystemsConfiguration", 
            path: "/voice-connectors/{VoiceConnectorId}/external-systems-configuration", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Gets information about an external systems configuration for a Voice Connector.
    ///
    /// Parameters:
    ///   - voiceConnectorId: The ID of the Voice Connector for which to return information about the external system configuration.
    ///   - logger: Logger use during operation
    @inlinable
    public func getVoiceConnectorExternalSystemsConfiguration(
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> GetVoiceConnectorExternalSystemsConfigurationResponse {
        let input = GetVoiceConnectorExternalSystemsConfigurationRequest(
            voiceConnectorId: voiceConnectorId
        )
        return try await self.getVoiceConnectorExternalSystemsConfiguration(input, logger: logger)
    }

    /// Retrieves details for the specified Amazon Chime SDK Voice Connector group,  such as timestamps,name, and associated VoiceConnectorItems.
    @Sendable
    @inlinable
    public func getVoiceConnectorGroup(_ input: GetVoiceConnectorGroupRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> GetVoiceConnectorGroupResponse {
        try await self.client.execute(
            operation: "GetVoiceConnectorGroup", 
            path: "/voice-connector-groups/{VoiceConnectorGroupId}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Retrieves details for the specified Amazon Chime SDK Voice Connector group,  such as timestamps,name, and associated VoiceConnectorItems.
    ///
    /// Parameters:
    ///   - voiceConnectorGroupId: The Voice Connector group ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func getVoiceConnectorGroup(
        voiceConnectorGroupId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> GetVoiceConnectorGroupResponse {
        let input = GetVoiceConnectorGroupRequest(
            voiceConnectorGroupId: voiceConnectorGroupId
        )
        return try await self.getVoiceConnectorGroup(input, logger: logger)
    }

    /// Retrieves the logging configuration settings for the specified Voice Connector. Shows whether SIP message logs are enabled for sending to Amazon CloudWatch Logs.
    @Sendable
    @inlinable
    public func getVoiceConnectorLoggingConfiguration(_ input: GetVoiceConnectorLoggingConfigurationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> GetVoiceConnectorLoggingConfigurationResponse {
        try await self.client.execute(
            operation: "GetVoiceConnectorLoggingConfiguration", 
            path: "/voice-connectors/{VoiceConnectorId}/logging-configuration", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Retrieves the logging configuration settings for the specified Voice Connector. Shows whether SIP message logs are enabled for sending to Amazon CloudWatch Logs.
    ///
    /// Parameters:
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func getVoiceConnectorLoggingConfiguration(
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> GetVoiceConnectorLoggingConfigurationResponse {
        let input = GetVoiceConnectorLoggingConfigurationRequest(
            voiceConnectorId: voiceConnectorId
        )
        return try await self.getVoiceConnectorLoggingConfiguration(input, logger: logger)
    }

    /// Retrieves the origination settings for the specified Voice Connector.
    @Sendable
    @inlinable
    public func getVoiceConnectorOrigination(_ input: GetVoiceConnectorOriginationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> GetVoiceConnectorOriginationResponse {
        try await self.client.execute(
            operation: "GetVoiceConnectorOrigination", 
            path: "/voice-connectors/{VoiceConnectorId}/origination", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Retrieves the origination settings for the specified Voice Connector.
    ///
    /// Parameters:
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func getVoiceConnectorOrigination(
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> GetVoiceConnectorOriginationResponse {
        let input = GetVoiceConnectorOriginationRequest(
            voiceConnectorId: voiceConnectorId
        )
        return try await self.getVoiceConnectorOrigination(input, logger: logger)
    }

    /// Retrieves the proxy configuration details for the specified Amazon Chime SDK Voice  Connector.
    @Sendable
    @inlinable
    public func getVoiceConnectorProxy(_ input: GetVoiceConnectorProxyRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> GetVoiceConnectorProxyResponse {
        try await self.client.execute(
            operation: "GetVoiceConnectorProxy", 
            path: "/voice-connectors/{VoiceConnectorId}/programmable-numbers/proxy", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Retrieves the proxy configuration details for the specified Amazon Chime SDK Voice  Connector.
    ///
    /// Parameters:
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func getVoiceConnectorProxy(
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> GetVoiceConnectorProxyResponse {
        let input = GetVoiceConnectorProxyRequest(
            voiceConnectorId: voiceConnectorId
        )
        return try await self.getVoiceConnectorProxy(input, logger: logger)
    }

    /// Retrieves the streaming configuration details for the specified Amazon Chime SDK  Voice Connector. Shows whether media streaming is enabled for sending to Amazon  Kinesis. It also shows the retention period, in hours, for the Amazon Kinesis data.
    @Sendable
    @inlinable
    public func getVoiceConnectorStreamingConfiguration(_ input: GetVoiceConnectorStreamingConfigurationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> GetVoiceConnectorStreamingConfigurationResponse {
        try await self.client.execute(
            operation: "GetVoiceConnectorStreamingConfiguration", 
            path: "/voice-connectors/{VoiceConnectorId}/streaming-configuration", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Retrieves the streaming configuration details for the specified Amazon Chime SDK  Voice Connector. Shows whether media streaming is enabled for sending to Amazon  Kinesis. It also shows the retention period, in hours, for the Amazon Kinesis data.
    ///
    /// Parameters:
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func getVoiceConnectorStreamingConfiguration(
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> GetVoiceConnectorStreamingConfigurationResponse {
        let input = GetVoiceConnectorStreamingConfigurationRequest(
            voiceConnectorId: voiceConnectorId
        )
        return try await self.getVoiceConnectorStreamingConfiguration(input, logger: logger)
    }

    /// Retrieves the termination setting details for the specified Voice Connector.
    @Sendable
    @inlinable
    public func getVoiceConnectorTermination(_ input: GetVoiceConnectorTerminationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> GetVoiceConnectorTerminationResponse {
        try await self.client.execute(
            operation: "GetVoiceConnectorTermination", 
            path: "/voice-connectors/{VoiceConnectorId}/termination", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Retrieves the termination setting details for the specified Voice Connector.
    ///
    /// Parameters:
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func getVoiceConnectorTermination(
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> GetVoiceConnectorTerminationResponse {
        let input = GetVoiceConnectorTerminationRequest(
            voiceConnectorId: voiceConnectorId
        )
        return try await self.getVoiceConnectorTermination(input, logger: logger)
    }

    /// Retrieves information about the last time a SIP OPTIONS ping  was received from your SIP infrastructure for the specified Amazon Chime SDK Voice  Connector.
    @Sendable
    @inlinable
    public func getVoiceConnectorTerminationHealth(_ input: GetVoiceConnectorTerminationHealthRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> GetVoiceConnectorTerminationHealthResponse {
        try await self.client.execute(
            operation: "GetVoiceConnectorTerminationHealth", 
            path: "/voice-connectors/{VoiceConnectorId}/termination/health", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Retrieves information about the last time a SIP OPTIONS ping  was received from your SIP infrastructure for the specified Amazon Chime SDK Voice  Connector.
    ///
    /// Parameters:
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func getVoiceConnectorTerminationHealth(
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> GetVoiceConnectorTerminationHealthResponse {
        let input = GetVoiceConnectorTerminationHealthRequest(
            voiceConnectorId: voiceConnectorId
        )
        return try await self.getVoiceConnectorTerminationHealth(input, logger: logger)
    }

    /// Retrieves the details of the specified voice profile.
    @Sendable
    @inlinable
    public func getVoiceProfile(_ input: GetVoiceProfileRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> GetVoiceProfileResponse {
        try await self.client.execute(
            operation: "GetVoiceProfile", 
            path: "/voice-profiles/{VoiceProfileId}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Retrieves the details of the specified voice profile.
    ///
    /// Parameters:
    ///   - voiceProfileId: The voice profile ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func getVoiceProfile(
        voiceProfileId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> GetVoiceProfileResponse {
        let input = GetVoiceProfileRequest(
            voiceProfileId: voiceProfileId
        )
        return try await self.getVoiceProfile(input, logger: logger)
    }

    /// Retrieves the details of the specified voice profile domain.
    @Sendable
    @inlinable
    public func getVoiceProfileDomain(_ input: GetVoiceProfileDomainRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> GetVoiceProfileDomainResponse {
        try await self.client.execute(
            operation: "GetVoiceProfileDomain", 
            path: "/voice-profile-domains/{VoiceProfileDomainId}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Retrieves the details of the specified voice profile domain.
    ///
    /// Parameters:
    ///   - voiceProfileDomainId: The voice profile domain ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func getVoiceProfileDomain(
        voiceProfileDomainId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> GetVoiceProfileDomainResponse {
        let input = GetVoiceProfileDomainRequest(
            voiceProfileDomainId: voiceProfileDomainId
        )
        return try await self.getVoiceProfileDomain(input, logger: logger)
    }

    /// Retrieves the details of a voice tone analysis task.
    @Sendable
    @inlinable
    public func getVoiceToneAnalysisTask(_ input: GetVoiceToneAnalysisTaskRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> GetVoiceToneAnalysisTaskResponse {
        try await self.client.execute(
            operation: "GetVoiceToneAnalysisTask", 
            path: "/voice-connectors/{VoiceConnectorId}/voice-tone-analysis-tasks/{VoiceToneAnalysisTaskId}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Retrieves the details of a voice tone analysis task.
    ///
    /// Parameters:
    ///   - isCaller: Specifies whether the voice being analyzed is the caller (originator) or the callee (responder).
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - voiceToneAnalysisTaskId: The ID of the voice tone analysis task.
    ///   - logger: Logger use during operation
    @inlinable
    public func getVoiceToneAnalysisTask(
        isCaller: Bool,
        voiceConnectorId: String,
        voiceToneAnalysisTaskId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> GetVoiceToneAnalysisTaskResponse {
        let input = GetVoiceToneAnalysisTaskRequest(
            isCaller: isCaller, 
            voiceConnectorId: voiceConnectorId, 
            voiceToneAnalysisTaskId: voiceToneAnalysisTaskId
        )
        return try await self.getVoiceToneAnalysisTask(input, logger: logger)
    }

    /// Lists the available AWS Regions in which you can create an Amazon Chime SDK Voice Connector.
    @Sendable
    @inlinable
    public func listAvailableVoiceConnectorRegions(logger: Logger = AWSClient.loggingDisabled) async throws -> ListAvailableVoiceConnectorRegionsResponse {
        try await self.client.execute(
            operation: "ListAvailableVoiceConnectorRegions", 
            path: "/voice-connector-regions", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            logger: logger
        )
    }

    /// Lists the phone numbers for an administrator's Amazon Chime SDK account.
    @Sendable
    @inlinable
    public func listPhoneNumberOrders(_ input: ListPhoneNumberOrdersRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListPhoneNumberOrdersResponse {
        try await self.client.execute(
            operation: "ListPhoneNumberOrders", 
            path: "/phone-number-orders", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists the phone numbers for an administrator's Amazon Chime SDK account.
    ///
    /// Parameters:
    ///   - maxResults: The maximum number of results to return in a single call.
    ///   - nextToken: The token used to retrieve the next page of results.
    ///   - logger: Logger use during operation
    @inlinable
    public func listPhoneNumberOrders(
        maxResults: Int? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListPhoneNumberOrdersResponse {
        let input = ListPhoneNumberOrdersRequest(
            maxResults: maxResults, 
            nextToken: nextToken
        )
        return try await self.listPhoneNumberOrders(input, logger: logger)
    }

    /// Lists the phone numbers for the specified Amazon Chime SDK account,  Amazon Chime SDK user, Amazon Chime SDK Voice Connector, or Amazon Chime SDK Voice  Connector group.
    @Sendable
    @inlinable
    public func listPhoneNumbers(_ input: ListPhoneNumbersRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListPhoneNumbersResponse {
        try await self.client.execute(
            operation: "ListPhoneNumbers", 
            path: "/phone-numbers", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists the phone numbers for the specified Amazon Chime SDK account,  Amazon Chime SDK user, Amazon Chime SDK Voice Connector, or Amazon Chime SDK Voice  Connector group.
    ///
    /// Parameters:
    ///   - filterName: The filter to limit the number of results.
    ///   - filterValue: The filter value.
    ///   - maxResults: The maximum number of results to return in a single call.
    ///   - nextToken: The token used to return the next page of results.
    ///   - productType: The phone number product types.
    ///   - status: The status of your organization's phone numbers.
    ///   - logger: Logger use during operation
    @inlinable
    public func listPhoneNumbers(
        filterName: PhoneNumberAssociationName? = nil,
        filterValue: String? = nil,
        maxResults: Int? = nil,
        nextToken: String? = nil,
        productType: PhoneNumberProductType? = nil,
        status: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListPhoneNumbersResponse {
        let input = ListPhoneNumbersRequest(
            filterName: filterName, 
            filterValue: filterValue, 
            maxResults: maxResults, 
            nextToken: nextToken, 
            productType: productType, 
            status: status
        )
        return try await self.listPhoneNumbers(input, logger: logger)
    }

    /// Lists the proxy sessions for the specified Amazon Chime SDK Voice Connector.
    @Sendable
    @inlinable
    public func listProxySessions(_ input: ListProxySessionsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListProxySessionsResponse {
        try await self.client.execute(
            operation: "ListProxySessions", 
            path: "/voice-connectors/{VoiceConnectorId}/proxy-sessions", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists the proxy sessions for the specified Amazon Chime SDK Voice Connector.
    ///
    /// Parameters:
    ///   - maxResults: The maximum number of results to return in a single call.
    ///   - nextToken: The token used to retrieve the next page of results.
    ///   - status: The proxy session status.
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func listProxySessions(
        maxResults: Int? = nil,
        nextToken: String? = nil,
        status: ProxySessionStatus? = nil,
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListProxySessionsResponse {
        let input = ListProxySessionsRequest(
            maxResults: maxResults, 
            nextToken: nextToken, 
            status: status, 
            voiceConnectorId: voiceConnectorId
        )
        return try await self.listProxySessions(input, logger: logger)
    }

    /// Lists the SIP media applications  under the administrator's AWS account.
    @Sendable
    @inlinable
    public func listSipMediaApplications(_ input: ListSipMediaApplicationsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListSipMediaApplicationsResponse {
        try await self.client.execute(
            operation: "ListSipMediaApplications", 
            path: "/sip-media-applications", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists the SIP media applications  under the administrator's AWS account.
    ///
    /// Parameters:
    ///   - maxResults: The maximum number of results to return in a single call. Defaults to 100.
    ///   - nextToken: The token used to return the next page of results.
    ///   - logger: Logger use during operation
    @inlinable
    public func listSipMediaApplications(
        maxResults: Int? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListSipMediaApplicationsResponse {
        let input = ListSipMediaApplicationsRequest(
            maxResults: maxResults, 
            nextToken: nextToken
        )
        return try await self.listSipMediaApplications(input, logger: logger)
    }

    /// Lists the SIP rules under the administrator's AWS account.
    @Sendable
    @inlinable
    public func listSipRules(_ input: ListSipRulesRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListSipRulesResponse {
        try await self.client.execute(
            operation: "ListSipRules", 
            path: "/sip-rules", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists the SIP rules under the administrator's AWS account.
    ///
    /// Parameters:
    ///   - maxResults: The maximum number of results to return in a single call. Defaults to 100.
    ///   - nextToken: The token used to return the next page of results.
    ///   - sipMediaApplicationId: The SIP media application ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func listSipRules(
        maxResults: Int? = nil,
        nextToken: String? = nil,
        sipMediaApplicationId: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListSipRulesResponse {
        let input = ListSipRulesRequest(
            maxResults: maxResults, 
            nextToken: nextToken, 
            sipMediaApplicationId: sipMediaApplicationId
        )
        return try await self.listSipRules(input, logger: logger)
    }

    /// Lists the countries that you can order phone numbers from.
    @Sendable
    @inlinable
    public func listSupportedPhoneNumberCountries(_ input: ListSupportedPhoneNumberCountriesRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListSupportedPhoneNumberCountriesResponse {
        try await self.client.execute(
            operation: "ListSupportedPhoneNumberCountries", 
            path: "/phone-number-countries", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists the countries that you can order phone numbers from.
    ///
    /// Parameters:
    ///   - productType: The phone number product type.
    ///   - logger: Logger use during operation
    @inlinable
    public func listSupportedPhoneNumberCountries(
        productType: PhoneNumberProductType,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListSupportedPhoneNumberCountriesResponse {
        let input = ListSupportedPhoneNumberCountriesRequest(
            productType: productType
        )
        return try await self.listSupportedPhoneNumberCountries(input, logger: logger)
    }

    /// Returns a list of the tags in a given resource.
    @Sendable
    @inlinable
    public func listTagsForResource(_ input: ListTagsForResourceRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListTagsForResourceResponse {
        try await self.client.execute(
            operation: "ListTagsForResource", 
            path: "/tags", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Returns a list of the tags in a given resource.
    ///
    /// Parameters:
    ///   - resourceARN: The resource ARN.
    ///   - logger: Logger use during operation
    @inlinable
    public func listTagsForResource(
        resourceARN: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListTagsForResourceResponse {
        let input = ListTagsForResourceRequest(
            resourceARN: resourceARN
        )
        return try await self.listTagsForResource(input, logger: logger)
    }

    /// Lists the Amazon Chime SDK Voice Connector groups in the administrator's AWS  account.
    @Sendable
    @inlinable
    public func listVoiceConnectorGroups(_ input: ListVoiceConnectorGroupsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListVoiceConnectorGroupsResponse {
        try await self.client.execute(
            operation: "ListVoiceConnectorGroups", 
            path: "/voice-connector-groups", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists the Amazon Chime SDK Voice Connector groups in the administrator's AWS  account.
    ///
    /// Parameters:
    ///   - maxResults: The maximum number of results to return in a single call.
    ///   - nextToken: The token used to return the next page of results.
    ///   - logger: Logger use during operation
    @inlinable
    public func listVoiceConnectorGroups(
        maxResults: Int? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListVoiceConnectorGroupsResponse {
        let input = ListVoiceConnectorGroupsRequest(
            maxResults: maxResults, 
            nextToken: nextToken
        )
        return try await self.listVoiceConnectorGroups(input, logger: logger)
    }

    /// Lists the SIP credentials for the specified Amazon Chime SDK Voice Connector.
    @Sendable
    @inlinable
    public func listVoiceConnectorTerminationCredentials(_ input: ListVoiceConnectorTerminationCredentialsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListVoiceConnectorTerminationCredentialsResponse {
        try await self.client.execute(
            operation: "ListVoiceConnectorTerminationCredentials", 
            path: "/voice-connectors/{VoiceConnectorId}/termination/credentials", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists the SIP credentials for the specified Amazon Chime SDK Voice Connector.
    ///
    /// Parameters:
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func listVoiceConnectorTerminationCredentials(
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListVoiceConnectorTerminationCredentialsResponse {
        let input = ListVoiceConnectorTerminationCredentialsRequest(
            voiceConnectorId: voiceConnectorId
        )
        return try await self.listVoiceConnectorTerminationCredentials(input, logger: logger)
    }

    /// Lists the Amazon Chime SDK Voice Connectors in the administrators  AWS account.
    @Sendable
    @inlinable
    public func listVoiceConnectors(_ input: ListVoiceConnectorsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListVoiceConnectorsResponse {
        try await self.client.execute(
            operation: "ListVoiceConnectors", 
            path: "/voice-connectors", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists the Amazon Chime SDK Voice Connectors in the administrators  AWS account.
    ///
    /// Parameters:
    ///   - maxResults: The maximum number of results to return in a single call.
    ///   - nextToken: The token used to return the next page of results.
    ///   - logger: Logger use during operation
    @inlinable
    public func listVoiceConnectors(
        maxResults: Int? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListVoiceConnectorsResponse {
        let input = ListVoiceConnectorsRequest(
            maxResults: maxResults, 
            nextToken: nextToken
        )
        return try await self.listVoiceConnectors(input, logger: logger)
    }

    /// Lists the specified voice profile domains in the administrator's AWS account.
    @Sendable
    @inlinable
    public func listVoiceProfileDomains(_ input: ListVoiceProfileDomainsRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListVoiceProfileDomainsResponse {
        try await self.client.execute(
            operation: "ListVoiceProfileDomains", 
            path: "/voice-profile-domains", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists the specified voice profile domains in the administrator's AWS account.
    ///
    /// Parameters:
    ///   - maxResults: The maximum number of results to return in a single call.
    ///   - nextToken: The token used to return the next page of results.
    ///   - logger: Logger use during operation
    @inlinable
    public func listVoiceProfileDomains(
        maxResults: Int? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListVoiceProfileDomainsResponse {
        let input = ListVoiceProfileDomainsRequest(
            maxResults: maxResults, 
            nextToken: nextToken
        )
        return try await self.listVoiceProfileDomains(input, logger: logger)
    }

    /// Lists the voice profiles in a voice profile domain.
    @Sendable
    @inlinable
    public func listVoiceProfiles(_ input: ListVoiceProfilesRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListVoiceProfilesResponse {
        try await self.client.execute(
            operation: "ListVoiceProfiles", 
            path: "/voice-profiles", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists the voice profiles in a voice profile domain.
    ///
    /// Parameters:
    ///   - maxResults: The maximum number of results in the request.
    ///   - nextToken: The token used to retrieve the next page of results.
    ///   - voiceProfileDomainId: The ID of the voice profile domain.
    ///   - logger: Logger use during operation
    @inlinable
    public func listVoiceProfiles(
        maxResults: Int? = nil,
        nextToken: String? = nil,
        voiceProfileDomainId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListVoiceProfilesResponse {
        let input = ListVoiceProfilesRequest(
            maxResults: maxResults, 
            nextToken: nextToken, 
            voiceProfileDomainId: voiceProfileDomainId
        )
        return try await self.listVoiceProfiles(input, logger: logger)
    }

    /// Updates the Alexa Skill configuration for the SIP media application.  Due to changes made by the Amazon Alexa service, this API is no longer available for use. For more information, refer to  the Alexa Smart Properties page.
    @available(*, deprecated, message: "Due to changes made by the Amazon Alexa service, this API is no longer available for use. For more information, refer to the Alexa Smart Properties page(https://developer.amazon.com/en-US/alexa/alexasmartproperties).")
    @Sendable
    @inlinable
    public func putSipMediaApplicationAlexaSkillConfiguration(_ input: PutSipMediaApplicationAlexaSkillConfigurationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> PutSipMediaApplicationAlexaSkillConfigurationResponse {
        try await self.client.execute(
            operation: "PutSipMediaApplicationAlexaSkillConfiguration", 
            path: "/sip-media-applications/{SipMediaApplicationId}/alexa-skill-configuration", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates the Alexa Skill configuration for the SIP media application.  Due to changes made by the Amazon Alexa service, this API is no longer available for use. For more information, refer to  the Alexa Smart Properties page.
    ///
    /// Parameters:
    ///   - sipMediaApplicationAlexaSkillConfiguration: The Alexa Skill configuration.
    ///   - sipMediaApplicationId: The SIP media application ID.
    ///   - logger: Logger use during operation
    @available(*, deprecated, message: "Due to changes made by the Amazon Alexa service, this API is no longer available for use. For more information, refer to the Alexa Smart Properties page(https://developer.amazon.com/en-US/alexa/alexasmartproperties).")
    @inlinable
    public func putSipMediaApplicationAlexaSkillConfiguration(
        sipMediaApplicationAlexaSkillConfiguration: SipMediaApplicationAlexaSkillConfiguration? = nil,
        sipMediaApplicationId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> PutSipMediaApplicationAlexaSkillConfigurationResponse {
        let input = PutSipMediaApplicationAlexaSkillConfigurationRequest(
            sipMediaApplicationAlexaSkillConfiguration: sipMediaApplicationAlexaSkillConfiguration, 
            sipMediaApplicationId: sipMediaApplicationId
        )
        return try await self.putSipMediaApplicationAlexaSkillConfiguration(input, logger: logger)
    }

    /// Updates the logging configuration for the specified SIP media application.
    @Sendable
    @inlinable
    public func putSipMediaApplicationLoggingConfiguration(_ input: PutSipMediaApplicationLoggingConfigurationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> PutSipMediaApplicationLoggingConfigurationResponse {
        try await self.client.execute(
            operation: "PutSipMediaApplicationLoggingConfiguration", 
            path: "/sip-media-applications/{SipMediaApplicationId}/logging-configuration", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates the logging configuration for the specified SIP media application.
    ///
    /// Parameters:
    ///   - sipMediaApplicationId: The SIP media application ID.
    ///   - sipMediaApplicationLoggingConfiguration: The logging configuration for the specified SIP media application.
    ///   - logger: Logger use during operation
    @inlinable
    public func putSipMediaApplicationLoggingConfiguration(
        sipMediaApplicationId: String,
        sipMediaApplicationLoggingConfiguration: SipMediaApplicationLoggingConfiguration? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> PutSipMediaApplicationLoggingConfigurationResponse {
        let input = PutSipMediaApplicationLoggingConfigurationRequest(
            sipMediaApplicationId: sipMediaApplicationId, 
            sipMediaApplicationLoggingConfiguration: sipMediaApplicationLoggingConfiguration
        )
        return try await self.putSipMediaApplicationLoggingConfiguration(input, logger: logger)
    }

    /// Updates a Voice Connector's emergency calling configuration.
    @Sendable
    @inlinable
    public func putVoiceConnectorEmergencyCallingConfiguration(_ input: PutVoiceConnectorEmergencyCallingConfigurationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> PutVoiceConnectorEmergencyCallingConfigurationResponse {
        try await self.client.execute(
            operation: "PutVoiceConnectorEmergencyCallingConfiguration", 
            path: "/voice-connectors/{VoiceConnectorId}/emergency-calling-configuration", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates a Voice Connector's emergency calling configuration.
    ///
    /// Parameters:
    ///   - emergencyCallingConfiguration: The configuration being updated.
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func putVoiceConnectorEmergencyCallingConfiguration(
        emergencyCallingConfiguration: EmergencyCallingConfiguration,
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> PutVoiceConnectorEmergencyCallingConfigurationResponse {
        let input = PutVoiceConnectorEmergencyCallingConfigurationRequest(
            emergencyCallingConfiguration: emergencyCallingConfiguration, 
            voiceConnectorId: voiceConnectorId
        )
        return try await self.putVoiceConnectorEmergencyCallingConfiguration(input, logger: logger)
    }

    /// Adds an external systems configuration to a Voice Connector.
    @Sendable
    @inlinable
    public func putVoiceConnectorExternalSystemsConfiguration(_ input: PutVoiceConnectorExternalSystemsConfigurationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> PutVoiceConnectorExternalSystemsConfigurationResponse {
        try await self.client.execute(
            operation: "PutVoiceConnectorExternalSystemsConfiguration", 
            path: "/voice-connectors/{VoiceConnectorId}/external-systems-configuration", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Adds an external systems configuration to a Voice Connector.
    ///
    /// Parameters:
    ///   - contactCenterSystemTypes: The contact center system to use.
    ///   - sessionBorderControllerTypes: The session border controllers to use.
    ///   - voiceConnectorId: The ID of the Voice Connector for which to add the external system configuration.
    ///   - logger: Logger use during operation
    @inlinable
    public func putVoiceConnectorExternalSystemsConfiguration(
        contactCenterSystemTypes: [ContactCenterSystemType]? = nil,
        sessionBorderControllerTypes: [SessionBorderControllerType]? = nil,
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> PutVoiceConnectorExternalSystemsConfigurationResponse {
        let input = PutVoiceConnectorExternalSystemsConfigurationRequest(
            contactCenterSystemTypes: contactCenterSystemTypes, 
            sessionBorderControllerTypes: sessionBorderControllerTypes, 
            voiceConnectorId: voiceConnectorId
        )
        return try await self.putVoiceConnectorExternalSystemsConfiguration(input, logger: logger)
    }

    /// Updates a Voice Connector's logging configuration.
    @Sendable
    @inlinable
    public func putVoiceConnectorLoggingConfiguration(_ input: PutVoiceConnectorLoggingConfigurationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> PutVoiceConnectorLoggingConfigurationResponse {
        try await self.client.execute(
            operation: "PutVoiceConnectorLoggingConfiguration", 
            path: "/voice-connectors/{VoiceConnectorId}/logging-configuration", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates a Voice Connector's logging configuration.
    ///
    /// Parameters:
    ///   - loggingConfiguration: The logging configuration being updated.
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func putVoiceConnectorLoggingConfiguration(
        loggingConfiguration: LoggingConfiguration,
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> PutVoiceConnectorLoggingConfigurationResponse {
        let input = PutVoiceConnectorLoggingConfigurationRequest(
            loggingConfiguration: loggingConfiguration, 
            voiceConnectorId: voiceConnectorId
        )
        return try await self.putVoiceConnectorLoggingConfiguration(input, logger: logger)
    }

    /// Updates a Voice Connector's origination settings.
    @Sendable
    @inlinable
    public func putVoiceConnectorOrigination(_ input: PutVoiceConnectorOriginationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> PutVoiceConnectorOriginationResponse {
        try await self.client.execute(
            operation: "PutVoiceConnectorOrigination", 
            path: "/voice-connectors/{VoiceConnectorId}/origination", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates a Voice Connector's origination settings.
    ///
    /// Parameters:
    ///   - origination: The origination settings being updated.
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func putVoiceConnectorOrigination(
        origination: Origination,
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> PutVoiceConnectorOriginationResponse {
        let input = PutVoiceConnectorOriginationRequest(
            origination: origination, 
            voiceConnectorId: voiceConnectorId
        )
        return try await self.putVoiceConnectorOrigination(input, logger: logger)
    }

    /// Puts the specified proxy configuration to the specified Amazon Chime SDK Voice Connector.
    @Sendable
    @inlinable
    public func putVoiceConnectorProxy(_ input: PutVoiceConnectorProxyRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> PutVoiceConnectorProxyResponse {
        try await self.client.execute(
            operation: "PutVoiceConnectorProxy", 
            path: "/voice-connectors/{VoiceConnectorId}/programmable-numbers/proxy", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Puts the specified proxy configuration to the specified Amazon Chime SDK Voice Connector.
    ///
    /// Parameters:
    ///   - defaultSessionExpiryMinutes: The default number of minutes allowed for proxy session.
    ///   - disabled: When true, stops proxy sessions from being created on the specified Amazon Chime SDK Voice Connector.
    ///   - fallBackPhoneNumber: The phone number to route calls to after a proxy session expires.
    ///   - phoneNumberPoolCountries: The countries for proxy phone numbers to be selected from.
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func putVoiceConnectorProxy(
        defaultSessionExpiryMinutes: Int,
        disabled: Bool? = nil,
        fallBackPhoneNumber: String? = nil,
        phoneNumberPoolCountries: [String],
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> PutVoiceConnectorProxyResponse {
        let input = PutVoiceConnectorProxyRequest(
            defaultSessionExpiryMinutes: defaultSessionExpiryMinutes, 
            disabled: disabled, 
            fallBackPhoneNumber: fallBackPhoneNumber, 
            phoneNumberPoolCountries: phoneNumberPoolCountries, 
            voiceConnectorId: voiceConnectorId
        )
        return try await self.putVoiceConnectorProxy(input, logger: logger)
    }

    /// Updates a Voice Connector's streaming configuration settings.
    @Sendable
    @inlinable
    public func putVoiceConnectorStreamingConfiguration(_ input: PutVoiceConnectorStreamingConfigurationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> PutVoiceConnectorStreamingConfigurationResponse {
        try await self.client.execute(
            operation: "PutVoiceConnectorStreamingConfiguration", 
            path: "/voice-connectors/{VoiceConnectorId}/streaming-configuration", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates a Voice Connector's streaming configuration settings.
    ///
    /// Parameters:
    ///   - streamingConfiguration: The streaming settings being updated.
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func putVoiceConnectorStreamingConfiguration(
        streamingConfiguration: StreamingConfiguration,
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> PutVoiceConnectorStreamingConfigurationResponse {
        let input = PutVoiceConnectorStreamingConfigurationRequest(
            streamingConfiguration: streamingConfiguration, 
            voiceConnectorId: voiceConnectorId
        )
        return try await self.putVoiceConnectorStreamingConfiguration(input, logger: logger)
    }

    /// Updates a Voice Connector's termination settings.
    @Sendable
    @inlinable
    public func putVoiceConnectorTermination(_ input: PutVoiceConnectorTerminationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> PutVoiceConnectorTerminationResponse {
        try await self.client.execute(
            operation: "PutVoiceConnectorTermination", 
            path: "/voice-connectors/{VoiceConnectorId}/termination", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates a Voice Connector's termination settings.
    ///
    /// Parameters:
    ///   - termination: The termination settings to be updated.
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func putVoiceConnectorTermination(
        termination: Termination,
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> PutVoiceConnectorTerminationResponse {
        let input = PutVoiceConnectorTerminationRequest(
            termination: termination, 
            voiceConnectorId: voiceConnectorId
        )
        return try await self.putVoiceConnectorTermination(input, logger: logger)
    }

    /// Updates a Voice Connector's termination credentials.
    @Sendable
    @inlinable
    public func putVoiceConnectorTerminationCredentials(_ input: PutVoiceConnectorTerminationCredentialsRequest, logger: Logger = AWSClient.loggingDisabled) async throws {
        try await self.client.execute(
            operation: "PutVoiceConnectorTerminationCredentials", 
            path: "/voice-connectors/{VoiceConnectorId}/termination/credentials?operation=put", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates a Voice Connector's termination credentials.
    ///
    /// Parameters:
    ///   - credentials: The termination credentials being updated.
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func putVoiceConnectorTerminationCredentials(
        credentials: [Credential]? = nil,
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws {
        let input = PutVoiceConnectorTerminationCredentialsRequest(
            credentials: credentials, 
            voiceConnectorId: voiceConnectorId
        )
        return try await self.putVoiceConnectorTerminationCredentials(input, logger: logger)
    }

    /// Restores a deleted phone number.
    @Sendable
    @inlinable
    public func restorePhoneNumber(_ input: RestorePhoneNumberRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> RestorePhoneNumberResponse {
        try await self.client.execute(
            operation: "RestorePhoneNumber", 
            path: "/phone-numbers/{PhoneNumberId}?operation=restore", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Restores a deleted phone number.
    ///
    /// Parameters:
    ///   - phoneNumberId: The ID of the phone number being restored.
    ///   - logger: Logger use during operation
    @inlinable
    public func restorePhoneNumber(
        phoneNumberId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> RestorePhoneNumberResponse {
        let input = RestorePhoneNumberRequest(
            phoneNumberId: phoneNumberId
        )
        return try await self.restorePhoneNumber(input, logger: logger)
    }

    /// Searches the provisioned phone numbers in an organization.
    @Sendable
    @inlinable
    public func searchAvailablePhoneNumbers(_ input: SearchAvailablePhoneNumbersRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> SearchAvailablePhoneNumbersResponse {
        try await self.client.execute(
            operation: "SearchAvailablePhoneNumbers", 
            path: "/search?type=phone-numbers", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Searches the provisioned phone numbers in an organization.
    ///
    /// Parameters:
    ///   - areaCode: Confines a search to just the phone numbers associated with the specified area code.
    ///   - city: Confines a search to just the phone numbers associated with the specified city.
    ///   - country: Confines a search to just the phone numbers associated with the specified country.
    ///   - maxResults: The maximum number of results to return.
    ///   - nextToken: The token used to return the next page of results.
    ///   - phoneNumberType: Confines a search to just the phone numbers associated with the specified phone number type, either local or toll-free.
    ///   - state: Confines a search to just the phone numbers associated with the specified state.
    ///   - tollFreePrefix: Confines a search to just the phone numbers associated with the specified toll-free prefix.
    ///   - logger: Logger use during operation
    @inlinable
    public func searchAvailablePhoneNumbers(
        areaCode: String? = nil,
        city: String? = nil,
        country: String? = nil,
        maxResults: Int? = nil,
        nextToken: String? = nil,
        phoneNumberType: PhoneNumberType? = nil,
        state: String? = nil,
        tollFreePrefix: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> SearchAvailablePhoneNumbersResponse {
        let input = SearchAvailablePhoneNumbersRequest(
            areaCode: areaCode, 
            city: city, 
            country: country, 
            maxResults: maxResults, 
            nextToken: nextToken, 
            phoneNumberType: phoneNumberType, 
            state: state, 
            tollFreePrefix: tollFreePrefix
        )
        return try await self.searchAvailablePhoneNumbers(input, logger: logger)
    }

    /// Starts a speaker search task.  Before starting any speaker search tasks, you must provide all notices and obtain all consents from the speaker as required under applicable privacy and biometrics laws, and as required under the   AWS service terms for the Amazon Chime SDK.
    @Sendable
    @inlinable
    public func startSpeakerSearchTask(_ input: StartSpeakerSearchTaskRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> StartSpeakerSearchTaskResponse {
        try await self.client.execute(
            operation: "StartSpeakerSearchTask", 
            path: "/voice-connectors/{VoiceConnectorId}/speaker-search-tasks", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Starts a speaker search task.  Before starting any speaker search tasks, you must provide all notices and obtain all consents from the speaker as required under applicable privacy and biometrics laws, and as required under the   AWS service terms for the Amazon Chime SDK.
    ///
    /// Parameters:
    ///   - callLeg: Specifies which call leg to stream for speaker search.
    ///   - clientRequestToken: The unique identifier for the client request. Use a different token for different speaker search tasks.
    ///   - transactionId: The transaction ID of the call being analyzed.
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - voiceProfileDomainId: The ID of the voice profile domain that will store the voice profile.
    ///   - logger: Logger use during operation
    @inlinable
    public func startSpeakerSearchTask(
        callLeg: CallLegType? = nil,
        clientRequestToken: String? = nil,
        transactionId: String,
        voiceConnectorId: String,
        voiceProfileDomainId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> StartSpeakerSearchTaskResponse {
        let input = StartSpeakerSearchTaskRequest(
            callLeg: callLeg, 
            clientRequestToken: clientRequestToken, 
            transactionId: transactionId, 
            voiceConnectorId: voiceConnectorId, 
            voiceProfileDomainId: voiceProfileDomainId
        )
        return try await self.startSpeakerSearchTask(input, logger: logger)
    }

    /// Starts a voice tone analysis task. For more information about voice tone analysis, see  Using Amazon Chime SDK voice analytics  in the Amazon Chime SDK Developer Guide.  Before starting any voice tone analysis tasks, you must provide all notices and obtain all consents from the speaker as required under applicable privacy and biometrics laws, and as required under the  AWS service terms for the Amazon Chime SDK.
    @Sendable
    @inlinable
    public func startVoiceToneAnalysisTask(_ input: StartVoiceToneAnalysisTaskRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> StartVoiceToneAnalysisTaskResponse {
        try await self.client.execute(
            operation: "StartVoiceToneAnalysisTask", 
            path: "/voice-connectors/{VoiceConnectorId}/voice-tone-analysis-tasks", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Starts a voice tone analysis task. For more information about voice tone analysis, see  Using Amazon Chime SDK voice analytics  in the Amazon Chime SDK Developer Guide.  Before starting any voice tone analysis tasks, you must provide all notices and obtain all consents from the speaker as required under applicable privacy and biometrics laws, and as required under the  AWS service terms for the Amazon Chime SDK.
    ///
    /// Parameters:
    ///   - clientRequestToken: The unique identifier for the client request. Use a different token for different voice tone analysis  tasks.
    ///   - languageCode: The language code.
    ///   - transactionId: The transaction ID.
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func startVoiceToneAnalysisTask(
        clientRequestToken: String? = nil,
        languageCode: LanguageCode,
        transactionId: String,
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> StartVoiceToneAnalysisTaskResponse {
        let input = StartVoiceToneAnalysisTaskRequest(
            clientRequestToken: clientRequestToken, 
            languageCode: languageCode, 
            transactionId: transactionId, 
            voiceConnectorId: voiceConnectorId
        )
        return try await self.startVoiceToneAnalysisTask(input, logger: logger)
    }

    /// Stops a speaker search task.
    @Sendable
    @inlinable
    public func stopSpeakerSearchTask(_ input: StopSpeakerSearchTaskRequest, logger: Logger = AWSClient.loggingDisabled) async throws {
        try await self.client.execute(
            operation: "StopSpeakerSearchTask", 
            path: "/voice-connectors/{VoiceConnectorId}/speaker-search-tasks/{SpeakerSearchTaskId}?operation=stop", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Stops a speaker search task.
    ///
    /// Parameters:
    ///   - speakerSearchTaskId: The speaker search task ID.
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func stopSpeakerSearchTask(
        speakerSearchTaskId: String,
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws {
        let input = StopSpeakerSearchTaskRequest(
            speakerSearchTaskId: speakerSearchTaskId, 
            voiceConnectorId: voiceConnectorId
        )
        return try await self.stopSpeakerSearchTask(input, logger: logger)
    }

    /// Stops a voice tone analysis task.
    @Sendable
    @inlinable
    public func stopVoiceToneAnalysisTask(_ input: StopVoiceToneAnalysisTaskRequest, logger: Logger = AWSClient.loggingDisabled) async throws {
        try await self.client.execute(
            operation: "StopVoiceToneAnalysisTask", 
            path: "/voice-connectors/{VoiceConnectorId}/voice-tone-analysis-tasks/{VoiceToneAnalysisTaskId}?operation=stop", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Stops a voice tone analysis task.
    ///
    /// Parameters:
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - voiceToneAnalysisTaskId: The ID of the voice tone analysis task.
    ///   - logger: Logger use during operation
    @inlinable
    public func stopVoiceToneAnalysisTask(
        voiceConnectorId: String,
        voiceToneAnalysisTaskId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws {
        let input = StopVoiceToneAnalysisTaskRequest(
            voiceConnectorId: voiceConnectorId, 
            voiceToneAnalysisTaskId: voiceToneAnalysisTaskId
        )
        return try await self.stopVoiceToneAnalysisTask(input, logger: logger)
    }

    /// Adds a tag to the specified resource.
    @Sendable
    @inlinable
    public func tagResource(_ input: TagResourceRequest, logger: Logger = AWSClient.loggingDisabled) async throws {
        try await self.client.execute(
            operation: "TagResource", 
            path: "/tags?operation=tag-resource", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Adds a tag to the specified resource.
    ///
    /// Parameters:
    ///   - resourceARN: The ARN of the resource being tagged.
    ///   - tags: A list of the tags being added to the resource.
    ///   - logger: Logger use during operation
    @inlinable
    public func tagResource(
        resourceARN: String,
        tags: [Tag],
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws {
        let input = TagResourceRequest(
            resourceARN: resourceARN, 
            tags: tags
        )
        return try await self.tagResource(input, logger: logger)
    }

    /// Removes tags from a resource.
    @Sendable
    @inlinable
    public func untagResource(_ input: UntagResourceRequest, logger: Logger = AWSClient.loggingDisabled) async throws {
        try await self.client.execute(
            operation: "UntagResource", 
            path: "/tags?operation=untag-resource", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Removes tags from a resource.
    ///
    /// Parameters:
    ///   - resourceARN: The ARN of the resource having its tags removed.
    ///   - tagKeys: The keys of the tags being removed from the resource.
    ///   - logger: Logger use during operation
    @inlinable
    public func untagResource(
        resourceARN: String,
        tagKeys: [String],
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws {
        let input = UntagResourceRequest(
            resourceARN: resourceARN, 
            tagKeys: tagKeys
        )
        return try await self.untagResource(input, logger: logger)
    }

    /// Updates global settings for the Amazon Chime SDK Voice Connectors in an AWS account.
    @Sendable
    @inlinable
    public func updateGlobalSettings(_ input: UpdateGlobalSettingsRequest, logger: Logger = AWSClient.loggingDisabled) async throws {
        try await self.client.execute(
            operation: "UpdateGlobalSettings", 
            path: "/settings", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates global settings for the Amazon Chime SDK Voice Connectors in an AWS account.
    ///
    /// Parameters:
    ///   - voiceConnector: The Voice Connector settings.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateGlobalSettings(
        voiceConnector: VoiceConnectorSettings? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws {
        let input = UpdateGlobalSettingsRequest(
            voiceConnector: voiceConnector
        )
        return try await self.updateGlobalSettings(input, logger: logger)
    }

    /// Updates phone number details, such as product type, calling name, or phone number name for the  specified phone number ID. You can update one phone number detail at a time. For  example, you can update either the product type, calling name, or phone number name in one action. For numbers outside the U.S., you must use the Amazon Chime SDK SIP Media  Application Dial-In product type. Updates to outbound calling names can take 72 hours to complete. Pending  updates to outbound calling names must be complete before you can request another  update.
    @Sendable
    @inlinable
    public func updatePhoneNumber(_ input: UpdatePhoneNumberRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdatePhoneNumberResponse {
        try await self.client.execute(
            operation: "UpdatePhoneNumber", 
            path: "/phone-numbers/{PhoneNumberId}", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates phone number details, such as product type, calling name, or phone number name for the  specified phone number ID. You can update one phone number detail at a time. For  example, you can update either the product type, calling name, or phone number name in one action. For numbers outside the U.S., you must use the Amazon Chime SDK SIP Media  Application Dial-In product type. Updates to outbound calling names can take 72 hours to complete. Pending  updates to outbound calling names must be complete before you can request another  update.
    ///
    /// Parameters:
    ///   - callingName: The outbound calling name associated with the phone number.
    ///   - name: Specifies the updated name assigned to one or more phone numbers.
    ///   - phoneNumberId: The phone number ID.
    ///   - productType: The product type.
    ///   - logger: Logger use during operation
    @inlinable
    public func updatePhoneNumber(
        callingName: String? = nil,
        name: String? = nil,
        phoneNumberId: String,
        productType: PhoneNumberProductType? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdatePhoneNumberResponse {
        let input = UpdatePhoneNumberRequest(
            callingName: callingName, 
            name: name, 
            phoneNumberId: phoneNumberId, 
            productType: productType
        )
        return try await self.updatePhoneNumber(input, logger: logger)
    }

    /// Updates the phone number settings for the administrator's AWS account, such  as the default outbound calling name. You can update the default outbound calling  name once every seven days. Outbound calling names can take up to 72 hours to  update.
    @Sendable
    @inlinable
    public func updatePhoneNumberSettings(_ input: UpdatePhoneNumberSettingsRequest, logger: Logger = AWSClient.loggingDisabled) async throws {
        try await self.client.execute(
            operation: "UpdatePhoneNumberSettings", 
            path: "/settings/phone-number", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates the phone number settings for the administrator's AWS account, such  as the default outbound calling name. You can update the default outbound calling  name once every seven days. Outbound calling names can take up to 72 hours to  update.
    ///
    /// Parameters:
    ///   - callingName: The default outbound calling name for the account.
    ///   - logger: Logger use during operation
    @inlinable
    public func updatePhoneNumberSettings(
        callingName: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws {
        let input = UpdatePhoneNumberSettingsRequest(
            callingName: callingName
        )
        return try await self.updatePhoneNumberSettings(input, logger: logger)
    }

    /// Updates the specified proxy session details, such as voice or SMS capabilities.
    @Sendable
    @inlinable
    public func updateProxySession(_ input: UpdateProxySessionRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateProxySessionResponse {
        try await self.client.execute(
            operation: "UpdateProxySession", 
            path: "/voice-connectors/{VoiceConnectorId}/proxy-sessions/{ProxySessionId}", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates the specified proxy session details, such as voice or SMS capabilities.
    ///
    /// Parameters:
    ///   - capabilities: The proxy session capabilities.
    ///   - expiryMinutes: The number of minutes allowed for the proxy session.
    ///   - proxySessionId: The proxy session ID.
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateProxySession(
        capabilities: [Capability],
        expiryMinutes: Int? = nil,
        proxySessionId: String,
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateProxySessionResponse {
        let input = UpdateProxySessionRequest(
            capabilities: capabilities, 
            expiryMinutes: expiryMinutes, 
            proxySessionId: proxySessionId, 
            voiceConnectorId: voiceConnectorId
        )
        return try await self.updateProxySession(input, logger: logger)
    }

    /// Updates the details of the specified SIP media application.
    @Sendable
    @inlinable
    public func updateSipMediaApplication(_ input: UpdateSipMediaApplicationRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateSipMediaApplicationResponse {
        try await self.client.execute(
            operation: "UpdateSipMediaApplication", 
            path: "/sip-media-applications/{SipMediaApplicationId}", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates the details of the specified SIP media application.
    ///
    /// Parameters:
    ///   - endpoints: The new set of endpoints for the specified SIP media application.
    ///   - name: The new name for the specified SIP media application.
    ///   - sipMediaApplicationId: The SIP media application ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateSipMediaApplication(
        endpoints: [SipMediaApplicationEndpoint]? = nil,
        name: String? = nil,
        sipMediaApplicationId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateSipMediaApplicationResponse {
        let input = UpdateSipMediaApplicationRequest(
            endpoints: endpoints, 
            name: name, 
            sipMediaApplicationId: sipMediaApplicationId
        )
        return try await self.updateSipMediaApplication(input, logger: logger)
    }

    /// Invokes the AWS Lambda function associated with the SIP media application and  transaction ID in an update request. The Lambda function can then return a new set  of actions.
    @Sendable
    @inlinable
    public func updateSipMediaApplicationCall(_ input: UpdateSipMediaApplicationCallRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateSipMediaApplicationCallResponse {
        try await self.client.execute(
            operation: "UpdateSipMediaApplicationCall", 
            path: "/sip-media-applications/{SipMediaApplicationId}/calls/{TransactionId}", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Invokes the AWS Lambda function associated with the SIP media application and  transaction ID in an update request. The Lambda function can then return a new set  of actions.
    ///
    /// Parameters:
    ///   - arguments: Arguments made available to the Lambda function as part of the  CALL_UPDATE_REQUESTED event. Can contain 0-20 key-value pairs.
    ///   - sipMediaApplicationId: The ID of the SIP media application handling the call.
    ///   - transactionId: The ID of the call transaction.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateSipMediaApplicationCall(
        arguments: [String: String],
        sipMediaApplicationId: String,
        transactionId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateSipMediaApplicationCallResponse {
        let input = UpdateSipMediaApplicationCallRequest(
            arguments: arguments, 
            sipMediaApplicationId: sipMediaApplicationId, 
            transactionId: transactionId
        )
        return try await self.updateSipMediaApplicationCall(input, logger: logger)
    }

    /// Updates the details of the specified SIP rule.
    @Sendable
    @inlinable
    public func updateSipRule(_ input: UpdateSipRuleRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateSipRuleResponse {
        try await self.client.execute(
            operation: "UpdateSipRule", 
            path: "/sip-rules/{SipRuleId}", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates the details of the specified SIP rule.
    ///
    /// Parameters:
    ///   - disabled: The new value that indicates whether the rule is disabled.
    ///   - name: The new name for the specified SIP rule.
    ///   - sipRuleId: The SIP rule ID.
    ///   - targetApplications: The new list of target applications.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateSipRule(
        disabled: Bool? = nil,
        name: String,
        sipRuleId: String,
        targetApplications: [SipRuleTargetApplication]? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateSipRuleResponse {
        let input = UpdateSipRuleRequest(
            disabled: disabled, 
            name: name, 
            sipRuleId: sipRuleId, 
            targetApplications: targetApplications
        )
        return try await self.updateSipRule(input, logger: logger)
    }

    /// Updates the details for the specified Amazon Chime SDK Voice Connector.
    @Sendable
    @inlinable
    public func updateVoiceConnector(_ input: UpdateVoiceConnectorRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateVoiceConnectorResponse {
        try await self.client.execute(
            operation: "UpdateVoiceConnector", 
            path: "/voice-connectors/{VoiceConnectorId}", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates the details for the specified Amazon Chime SDK Voice Connector.
    ///
    /// Parameters:
    ///   - name: The name of the Voice Connector.
    ///   - requireEncryption: When enabled, requires encryption for the Voice Connector.
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateVoiceConnector(
        name: String,
        requireEncryption: Bool,
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateVoiceConnectorResponse {
        let input = UpdateVoiceConnectorRequest(
            name: name, 
            requireEncryption: requireEncryption, 
            voiceConnectorId: voiceConnectorId
        )
        return try await self.updateVoiceConnector(input, logger: logger)
    }

    /// Updates the settings for the specified Amazon Chime SDK Voice Connector group.
    @Sendable
    @inlinable
    public func updateVoiceConnectorGroup(_ input: UpdateVoiceConnectorGroupRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateVoiceConnectorGroupResponse {
        try await self.client.execute(
            operation: "UpdateVoiceConnectorGroup", 
            path: "/voice-connector-groups/{VoiceConnectorGroupId}", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates the settings for the specified Amazon Chime SDK Voice Connector group.
    ///
    /// Parameters:
    ///   - name: The name of the Voice Connector group.
    ///   - voiceConnectorGroupId: The Voice Connector ID.
    ///   - voiceConnectorItems: The VoiceConnectorItems to associate with the Voice Connector  group.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateVoiceConnectorGroup(
        name: String,
        voiceConnectorGroupId: String,
        voiceConnectorItems: [VoiceConnectorItem],
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateVoiceConnectorGroupResponse {
        let input = UpdateVoiceConnectorGroupRequest(
            name: name, 
            voiceConnectorGroupId: voiceConnectorGroupId, 
            voiceConnectorItems: voiceConnectorItems
        )
        return try await self.updateVoiceConnectorGroup(input, logger: logger)
    }

    /// Updates the specified voice profile’s voice print and refreshes its expiration timestamp.  As a condition of using this feature, you acknowledge that the collection, use, storage, and retention of  your caller’s biometric identifiers and biometric information (“biometric data”) in the form of a digital voiceprint  requires the caller’s informed consent via a written release. Such consent is required under various state laws,  including biometrics laws in Illinois, Texas, Washington and other state privacy laws. You must provide a written release to each caller through a process that clearly reflects each caller’s informed  consent before using Amazon Chime SDK Voice Insights service, as required under the terms of your agreement  with AWS governing your use of the service.
    @Sendable
    @inlinable
    public func updateVoiceProfile(_ input: UpdateVoiceProfileRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateVoiceProfileResponse {
        try await self.client.execute(
            operation: "UpdateVoiceProfile", 
            path: "/voice-profiles/{VoiceProfileId}", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates the specified voice profile’s voice print and refreshes its expiration timestamp.  As a condition of using this feature, you acknowledge that the collection, use, storage, and retention of  your caller’s biometric identifiers and biometric information (“biometric data”) in the form of a digital voiceprint  requires the caller’s informed consent via a written release. Such consent is required under various state laws,  including biometrics laws in Illinois, Texas, Washington and other state privacy laws. You must provide a written release to each caller through a process that clearly reflects each caller’s informed  consent before using Amazon Chime SDK Voice Insights service, as required under the terms of your agreement  with AWS governing your use of the service.
    ///
    /// Parameters:
    ///   - speakerSearchTaskId: The ID of the speaker search task.
    ///   - voiceProfileId: The profile ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateVoiceProfile(
        speakerSearchTaskId: String,
        voiceProfileId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateVoiceProfileResponse {
        let input = UpdateVoiceProfileRequest(
            speakerSearchTaskId: speakerSearchTaskId, 
            voiceProfileId: voiceProfileId
        )
        return try await self.updateVoiceProfile(input, logger: logger)
    }

    /// Updates the settings for the specified voice profile domain.
    @Sendable
    @inlinable
    public func updateVoiceProfileDomain(_ input: UpdateVoiceProfileDomainRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UpdateVoiceProfileDomainResponse {
        try await self.client.execute(
            operation: "UpdateVoiceProfileDomain", 
            path: "/voice-profile-domains/{VoiceProfileDomainId}", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates the settings for the specified voice profile domain.
    ///
    /// Parameters:
    ///   - description: The description of the voice profile domain.
    ///   - name: The name of the voice profile domain.
    ///   - voiceProfileDomainId: The domain ID.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateVoiceProfileDomain(
        description: String? = nil,
        name: String? = nil,
        voiceProfileDomainId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UpdateVoiceProfileDomainResponse {
        let input = UpdateVoiceProfileDomainRequest(
            description: description, 
            name: name, 
            voiceProfileDomainId: voiceProfileDomainId
        )
        return try await self.updateVoiceProfileDomain(input, logger: logger)
    }

    /// Validates an address to be used for 911 calls made with Amazon Chime SDK Voice  Connectors. You can use validated addresses in a Presence Information Data Format  Location Object file that you include in SIP requests. That helps ensure that addresses  are routed to the appropriate Public Safety Answering Point.
    @Sendable
    @inlinable
    public func validateE911Address(_ input: ValidateE911AddressRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ValidateE911AddressResponse {
        try await self.client.execute(
            operation: "ValidateE911Address", 
            path: "/emergency-calling/address", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Validates an address to be used for 911 calls made with Amazon Chime SDK Voice  Connectors. You can use validated addresses in a Presence Information Data Format  Location Object file that you include in SIP requests. That helps ensure that addresses  are routed to the appropriate Public Safety Answering Point.
    ///
    /// Parameters:
    ///   - awsAccountId: The AWS account ID.
    ///   - city: The address city, such as Portland.
    ///   - country: The country in the address being validated as two-letter country code in ISO 3166-1 alpha-2 format, such as US. For more information, see ISO 3166-1 alpha-2 in Wikipedia.
    ///   - postalCode: The dress postal code, such 04352.
    ///   - state: The address state, such as ME.
    ///   - streetInfo: The address street information, such as 8th Avenue.
    ///   - streetNumber: The address street number, such as 200 or 2121.
    ///   - logger: Logger use during operation
    @inlinable
    public func validateE911Address(
        awsAccountId: String,
        city: String,
        country: String,
        postalCode: String,
        state: String,
        streetInfo: String,
        streetNumber: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ValidateE911AddressResponse {
        let input = ValidateE911AddressRequest(
            awsAccountId: awsAccountId, 
            city: city, 
            country: country, 
            postalCode: postalCode, 
            state: state, 
            streetInfo: streetInfo, 
            streetNumber: streetNumber
        )
        return try await self.validateE911Address(input, logger: logger)
    }
}

extension ChimeSDKVoice {
    /// Initializer required by `AWSService.with(middlewares:timeout:byteBufferAllocator:options)`. You are not able to use this initializer directly as there are not public
    /// initializers for `AWSServiceConfig.Patch`. Please use `AWSService.with(middlewares:timeout:byteBufferAllocator:options)` instead.
    public init(from: ChimeSDKVoice, patch: AWSServiceConfig.Patch) {
        self.client = from.client
        self.config = from.config.with(patch: patch)
    }
}

// MARK: Paginators

@available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
extension ChimeSDKVoice {
    /// Return PaginatorSequence for operation ``listPhoneNumberOrders(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listPhoneNumberOrdersPaginator(
        _ input: ListPhoneNumberOrdersRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListPhoneNumberOrdersRequest, ListPhoneNumberOrdersResponse> {
        return .init(
            input: input,
            command: self.listPhoneNumberOrders,
            inputKey: \ListPhoneNumberOrdersRequest.nextToken,
            outputKey: \ListPhoneNumberOrdersResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listPhoneNumberOrders(_:logger:)``.
    ///
    /// - Parameters:
    ///   - maxResults: The maximum number of results to return in a single call.
    ///   - logger: Logger used for logging
    @inlinable
    public func listPhoneNumberOrdersPaginator(
        maxResults: Int? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListPhoneNumberOrdersRequest, ListPhoneNumberOrdersResponse> {
        let input = ListPhoneNumberOrdersRequest(
            maxResults: maxResults
        )
        return self.listPhoneNumberOrdersPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listPhoneNumbers(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listPhoneNumbersPaginator(
        _ input: ListPhoneNumbersRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListPhoneNumbersRequest, ListPhoneNumbersResponse> {
        return .init(
            input: input,
            command: self.listPhoneNumbers,
            inputKey: \ListPhoneNumbersRequest.nextToken,
            outputKey: \ListPhoneNumbersResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listPhoneNumbers(_:logger:)``.
    ///
    /// - Parameters:
    ///   - filterName: The filter to limit the number of results.
    ///   - filterValue: The filter value.
    ///   - maxResults: The maximum number of results to return in a single call.
    ///   - productType: The phone number product types.
    ///   - status: The status of your organization's phone numbers.
    ///   - logger: Logger used for logging
    @inlinable
    public func listPhoneNumbersPaginator(
        filterName: PhoneNumberAssociationName? = nil,
        filterValue: String? = nil,
        maxResults: Int? = nil,
        productType: PhoneNumberProductType? = nil,
        status: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListPhoneNumbersRequest, ListPhoneNumbersResponse> {
        let input = ListPhoneNumbersRequest(
            filterName: filterName, 
            filterValue: filterValue, 
            maxResults: maxResults, 
            productType: productType, 
            status: status
        )
        return self.listPhoneNumbersPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listProxySessions(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listProxySessionsPaginator(
        _ input: ListProxySessionsRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListProxySessionsRequest, ListProxySessionsResponse> {
        return .init(
            input: input,
            command: self.listProxySessions,
            inputKey: \ListProxySessionsRequest.nextToken,
            outputKey: \ListProxySessionsResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listProxySessions(_:logger:)``.
    ///
    /// - Parameters:
    ///   - maxResults: The maximum number of results to return in a single call.
    ///   - status: The proxy session status.
    ///   - voiceConnectorId: The Voice Connector ID.
    ///   - logger: Logger used for logging
    @inlinable
    public func listProxySessionsPaginator(
        maxResults: Int? = nil,
        status: ProxySessionStatus? = nil,
        voiceConnectorId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListProxySessionsRequest, ListProxySessionsResponse> {
        let input = ListProxySessionsRequest(
            maxResults: maxResults, 
            status: status, 
            voiceConnectorId: voiceConnectorId
        )
        return self.listProxySessionsPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listSipMediaApplications(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listSipMediaApplicationsPaginator(
        _ input: ListSipMediaApplicationsRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListSipMediaApplicationsRequest, ListSipMediaApplicationsResponse> {
        return .init(
            input: input,
            command: self.listSipMediaApplications,
            inputKey: \ListSipMediaApplicationsRequest.nextToken,
            outputKey: \ListSipMediaApplicationsResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listSipMediaApplications(_:logger:)``.
    ///
    /// - Parameters:
    ///   - maxResults: The maximum number of results to return in a single call. Defaults to 100.
    ///   - logger: Logger used for logging
    @inlinable
    public func listSipMediaApplicationsPaginator(
        maxResults: Int? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListSipMediaApplicationsRequest, ListSipMediaApplicationsResponse> {
        let input = ListSipMediaApplicationsRequest(
            maxResults: maxResults
        )
        return self.listSipMediaApplicationsPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listSipRules(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listSipRulesPaginator(
        _ input: ListSipRulesRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListSipRulesRequest, ListSipRulesResponse> {
        return .init(
            input: input,
            command: self.listSipRules,
            inputKey: \ListSipRulesRequest.nextToken,
            outputKey: \ListSipRulesResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listSipRules(_:logger:)``.
    ///
    /// - Parameters:
    ///   - maxResults: The maximum number of results to return in a single call. Defaults to 100.
    ///   - sipMediaApplicationId: The SIP media application ID.
    ///   - logger: Logger used for logging
    @inlinable
    public func listSipRulesPaginator(
        maxResults: Int? = nil,
        sipMediaApplicationId: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListSipRulesRequest, ListSipRulesResponse> {
        let input = ListSipRulesRequest(
            maxResults: maxResults, 
            sipMediaApplicationId: sipMediaApplicationId
        )
        return self.listSipRulesPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listVoiceConnectorGroups(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listVoiceConnectorGroupsPaginator(
        _ input: ListVoiceConnectorGroupsRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListVoiceConnectorGroupsRequest, ListVoiceConnectorGroupsResponse> {
        return .init(
            input: input,
            command: self.listVoiceConnectorGroups,
            inputKey: \ListVoiceConnectorGroupsRequest.nextToken,
            outputKey: \ListVoiceConnectorGroupsResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listVoiceConnectorGroups(_:logger:)``.
    ///
    /// - Parameters:
    ///   - maxResults: The maximum number of results to return in a single call.
    ///   - logger: Logger used for logging
    @inlinable
    public func listVoiceConnectorGroupsPaginator(
        maxResults: Int? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListVoiceConnectorGroupsRequest, ListVoiceConnectorGroupsResponse> {
        let input = ListVoiceConnectorGroupsRequest(
            maxResults: maxResults
        )
        return self.listVoiceConnectorGroupsPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listVoiceConnectors(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listVoiceConnectorsPaginator(
        _ input: ListVoiceConnectorsRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListVoiceConnectorsRequest, ListVoiceConnectorsResponse> {
        return .init(
            input: input,
            command: self.listVoiceConnectors,
            inputKey: \ListVoiceConnectorsRequest.nextToken,
            outputKey: \ListVoiceConnectorsResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listVoiceConnectors(_:logger:)``.
    ///
    /// - Parameters:
    ///   - maxResults: The maximum number of results to return in a single call.
    ///   - logger: Logger used for logging
    @inlinable
    public func listVoiceConnectorsPaginator(
        maxResults: Int? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListVoiceConnectorsRequest, ListVoiceConnectorsResponse> {
        let input = ListVoiceConnectorsRequest(
            maxResults: maxResults
        )
        return self.listVoiceConnectorsPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listVoiceProfileDomains(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listVoiceProfileDomainsPaginator(
        _ input: ListVoiceProfileDomainsRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListVoiceProfileDomainsRequest, ListVoiceProfileDomainsResponse> {
        return .init(
            input: input,
            command: self.listVoiceProfileDomains,
            inputKey: \ListVoiceProfileDomainsRequest.nextToken,
            outputKey: \ListVoiceProfileDomainsResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listVoiceProfileDomains(_:logger:)``.
    ///
    /// - Parameters:
    ///   - maxResults: The maximum number of results to return in a single call.
    ///   - logger: Logger used for logging
    @inlinable
    public func listVoiceProfileDomainsPaginator(
        maxResults: Int? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListVoiceProfileDomainsRequest, ListVoiceProfileDomainsResponse> {
        let input = ListVoiceProfileDomainsRequest(
            maxResults: maxResults
        )
        return self.listVoiceProfileDomainsPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``listVoiceProfiles(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listVoiceProfilesPaginator(
        _ input: ListVoiceProfilesRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListVoiceProfilesRequest, ListVoiceProfilesResponse> {
        return .init(
            input: input,
            command: self.listVoiceProfiles,
            inputKey: \ListVoiceProfilesRequest.nextToken,
            outputKey: \ListVoiceProfilesResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listVoiceProfiles(_:logger:)``.
    ///
    /// - Parameters:
    ///   - maxResults: The maximum number of results in the request.
    ///   - voiceProfileDomainId: The ID of the voice profile domain.
    ///   - logger: Logger used for logging
    @inlinable
    public func listVoiceProfilesPaginator(
        maxResults: Int? = nil,
        voiceProfileDomainId: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListVoiceProfilesRequest, ListVoiceProfilesResponse> {
        let input = ListVoiceProfilesRequest(
            maxResults: maxResults, 
            voiceProfileDomainId: voiceProfileDomainId
        )
        return self.listVoiceProfilesPaginator(input, logger: logger)
    }

    /// Return PaginatorSequence for operation ``searchAvailablePhoneNumbers(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func searchAvailablePhoneNumbersPaginator(
        _ input: SearchAvailablePhoneNumbersRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<SearchAvailablePhoneNumbersRequest, SearchAvailablePhoneNumbersResponse> {
        return .init(
            input: input,
            command: self.searchAvailablePhoneNumbers,
            inputKey: \SearchAvailablePhoneNumbersRequest.nextToken,
            outputKey: \SearchAvailablePhoneNumbersResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``searchAvailablePhoneNumbers(_:logger:)``.
    ///
    /// - Parameters:
    ///   - areaCode: Confines a search to just the phone numbers associated with the specified area code.
    ///   - city: Confines a search to just the phone numbers associated with the specified city.
    ///   - country: Confines a search to just the phone numbers associated with the specified country.
    ///   - maxResults: The maximum number of results to return.
    ///   - phoneNumberType: Confines a search to just the phone numbers associated with the specified phone number type, either local or toll-free.
    ///   - state: Confines a search to just the phone numbers associated with the specified state.
    ///   - tollFreePrefix: Confines a search to just the phone numbers associated with the specified toll-free prefix.
    ///   - logger: Logger used for logging
    @inlinable
    public func searchAvailablePhoneNumbersPaginator(
        areaCode: String? = nil,
        city: String? = nil,
        country: String? = nil,
        maxResults: Int? = nil,
        phoneNumberType: PhoneNumberType? = nil,
        state: String? = nil,
        tollFreePrefix: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<SearchAvailablePhoneNumbersRequest, SearchAvailablePhoneNumbersResponse> {
        let input = SearchAvailablePhoneNumbersRequest(
            areaCode: areaCode, 
            city: city, 
            country: country, 
            maxResults: maxResults, 
            phoneNumberType: phoneNumberType, 
            state: state, 
            tollFreePrefix: tollFreePrefix
        )
        return self.searchAvailablePhoneNumbersPaginator(input, logger: logger)
    }
}

extension ChimeSDKVoice.ListPhoneNumberOrdersRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> ChimeSDKVoice.ListPhoneNumberOrdersRequest {
        return .init(
            maxResults: self.maxResults,
            nextToken: token
        )
    }
}

extension ChimeSDKVoice.ListPhoneNumbersRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> ChimeSDKVoice.ListPhoneNumbersRequest {
        return .init(
            filterName: self.filterName,
            filterValue: self.filterValue,
            maxResults: self.maxResults,
            nextToken: token,
            productType: self.productType,
            status: self.status
        )
    }
}

extension ChimeSDKVoice.ListProxySessionsRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> ChimeSDKVoice.ListProxySessionsRequest {
        return .init(
            maxResults: self.maxResults,
            nextToken: token,
            status: self.status,
            voiceConnectorId: self.voiceConnectorId
        )
    }
}

extension ChimeSDKVoice.ListSipMediaApplicationsRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> ChimeSDKVoice.ListSipMediaApplicationsRequest {
        return .init(
            maxResults: self.maxResults,
            nextToken: token
        )
    }
}

extension ChimeSDKVoice.ListSipRulesRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> ChimeSDKVoice.ListSipRulesRequest {
        return .init(
            maxResults: self.maxResults,
            nextToken: token,
            sipMediaApplicationId: self.sipMediaApplicationId
        )
    }
}

extension ChimeSDKVoice.ListVoiceConnectorGroupsRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> ChimeSDKVoice.ListVoiceConnectorGroupsRequest {
        return .init(
            maxResults: self.maxResults,
            nextToken: token
        )
    }
}

extension ChimeSDKVoice.ListVoiceConnectorsRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> ChimeSDKVoice.ListVoiceConnectorsRequest {
        return .init(
            maxResults: self.maxResults,
            nextToken: token
        )
    }
}

extension ChimeSDKVoice.ListVoiceProfileDomainsRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> ChimeSDKVoice.ListVoiceProfileDomainsRequest {
        return .init(
            maxResults: self.maxResults,
            nextToken: token
        )
    }
}

extension ChimeSDKVoice.ListVoiceProfilesRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> ChimeSDKVoice.ListVoiceProfilesRequest {
        return .init(
            maxResults: self.maxResults,
            nextToken: token,
            voiceProfileDomainId: self.voiceProfileDomainId
        )
    }
}

extension ChimeSDKVoice.SearchAvailablePhoneNumbersRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> ChimeSDKVoice.SearchAvailablePhoneNumbersRequest {
        return .init(
            areaCode: self.areaCode,
            city: self.city,
            country: self.country,
            maxResults: self.maxResults,
            nextToken: token,
            phoneNumberType: self.phoneNumberType,
            state: self.state,
            tollFreePrefix: self.tollFreePrefix
        )
    }
}
